Java Android Spinner-如何删除单选按钮?

Java Android Spinner-如何删除单选按钮?,java,android,android-widget,spinner,Java,Android,Android Widget,Spinner,在Android 1.6中,点击微调器(下拉菜单)时,微调器选项旁边会出现单选按钮。如何删除这些单选按钮以便只保留选项文本?如果要删除微调器列表上的单选按钮,必须为行提供自己的布局。 请看下面的示例: package com.ramps; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.widget.ArrayAdapter; impor

在Android 1.6中,点击微调器(下拉菜单)时,微调器选项旁边会出现单选按钮。如何删除这些单选按钮以便只保留选项文本?

如果要删除微调器列表上的单选按钮,必须为行提供自己的布局。
请看下面的示例:


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);          
        }   

    }
}

微调器行的自定义布局只是一个简单的线性布局,带有一个id为“text”的TextView元素(android:id=“@+id/text”)


这只是一个简单的例子。如果您需要比文本视图更奇特的布局,您可能需要重写MySpinnerAdapter的getView()方法。

只需删除单选按钮,您就不需要自己的适配器类

在布局中创建下拉菜单_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" />

默认微调器下拉项是具有单选按钮的CheckedTextView。在这里,您可以将其替换为文本视图。

您可以使用android布局

android.R.layout.simple_spinner_item 
而不是

android.R.layout.simple_spinner_dropdown_item
但我推荐答案,它会让你控制布局。

“android.R.layout.simple\u spinner\u 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);
modeSpinner=新微调器(layout.getContext());
ArrayAdapter ArrayAdapter=新的ArrayAdapter(layout.getContext(),
android.R.layout.simple_微调器_项,Arrays.asList(modes));
arrayAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u项);
最“干净”的方法是创建自定义适配器(如上面的答案所示):

公共类SimpleSpinnerArrayAdapter扩展了ArrayAdapter{
公共SimpleSpinnerArrayAdapter(上下文上下文,字符串[]数据){
super(context,android.R.layout.simple\u微调器\u项,数据);
这个.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
}
公共SimpleSpinnerArrayAdapter(上下文、列表数据){
super(context,android.R.layout.simple\u微调器\u项,数据);
这个.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
}
/**
*返回带有已删除复选框的默认下拉视图
*/
公共视图getDropDownView(int位置、视图转换视图、视图组父视图){
视图=super.getDropDownView(位置、转换视图、父级);
if(view!=null&&view instanceof CheckedTextView){
((CheckedTextView)视图)。setCheckMarkDrawable(空);
}
返回视图;
}
}

请注意
getDropDownView()
方法,它返回下拉列表项的视图。您可以在此处使用任何自定义视图,但如果您想坚持使用默认视图,则可能应该使用上述代码。

如果您的项目中包含了android支持库版本18或更高版本,则可以将资源id
简单微调器下拉项
替换为
支持简单微调器下拉项
。这将删除单选按钮。

使用
简单下拉列表\u项目\u 1line

是否为
android:id=“@android:id/text1”
可选?
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);
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;
    }
}