在Android 1.6中,点击下拉菜单后,旁边会出现单选按钮。如何去掉这些单选按钮,只保留选项文本?
为了去掉单选按钮,您不需要自己的适配器类。
在布局中创建一个dropdown_item.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="true"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:ellipsize="marquee" />
然后在代码中进行以下调用。
arrayAdapter.setDropDownViewResource(R.layout.dropdown_item);
默认的微调菜单项是一个带有单选按钮的CheckedTextView。在这里,您可以将其替换为TextView。
你可以使用 Android 布局
android.R.layout.simple_spinner_item
而不是
android.R.layout.simple_spinner_dropdown_item
但是我建议阅读@kimkunjj的回答,它将使您掌握布局的控制权。
如果您想在旋转列表中去掉单选按钮,则需要为行提供自己的布局。
请参阅以下示例:
package com.ramps;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
public class MySpinner extends Activity {
//data that will be used as a spinner options
private static String data[] = {"one", "two", "three"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//main.xml file contains spinner
setContentView(R.layout.main);
Spinner spinner = (Spinner) findViewById(R.id.spinner);
//create your own adapter
MySpinnerAdapter adapter = new MySpinnerAdapter(this,R.layout.custom_spinner_row,R.id.text, data );
//set your custom adapter
spinner.setAdapter( adapter );
}
private class MySpinnerAdapter extends ArrayAdapter{
public MySpinnerAdapter(Context context, int resource,
int textViewResourceId, String[] objects) {
super(context, resource, textViewResourceId, objects);
}
}
}
android.R.layout.simple_spinner_item" 可以完成这个任务,
在程序中可以这样实现:
"modeSpinner=new Spinner(layout.getContext());
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(layout.getContext(),
android.R.layout.simple_spinner_item, Arrays.asList(modes));
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
simple_dropdown_item_1line
。simple_spinner_dropdown_item
替换为 support_simple_spinner_dropdown_item
,这样就可以去掉单选按钮。最“干净”的方法是这样做(只需删除复选框,不触及任何其他内容,包括文本样式、项目大小等):创建自定义适配器(就像上面的答案中所示):
public class SimpleSpinnerArrayAdapter extends ArrayAdapter<String> {
public SimpleSpinnerArrayAdapter(Context context, String[] data) {
super(context, android.R.layout.simple_spinner_item, data);
this.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
}
public SimpleSpinnerArrayAdapter(Context context, List<String> data) {
super(context, android.R.layout.simple_spinner_item, data);
this.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
}
/**
* Returns default dropdown view with removed checkbox
*/
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
if (view != null && view instanceof CheckedTextView) {
((CheckedTextView) view).setCheckMarkDrawable(null);
}
return view;
}
}
getDropDownView()
方法,它返回下拉列表项的视图。您可以在此处使用任何自定义视图,但如果您想坚持使用默认视图,则应该使用上面的代码。
android:id="@android:id/text1"
是可选的吗? - cprcrack