6

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

4

7 回答 7

24

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

在布局中创建一个 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。

于 2011-04-28T07:01:34.977 回答
5

您可以使用android布局

android.R.layout.simple_spinner_item 

代替

android.R.layout.simple_spinner_dropdown_item

但我推荐@kimkunjj答案,它会给你布局的控制权。

于 2012-09-24T08:40:47.370 回答
4

如果您想摆脱微调器列表上的单选按钮,您必须为行提供自己的布局。
看看下面的例子:


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

    }
}


微调行的自定义布局只是一个简单的 LinearLayout,其中包含一个 id 为“text”的 TextView 元素 (android:id="@+id/text")

这只是一个简单的示例。如果您需要比 TextView 更花哨的布局,您可能必须重写 MySpinnerAdapter 的 getView() 方法。

于 2009-12-13T18:46:19.560 回答
1

“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);
于 2012-10-03T01:56:11.040 回答
1

如果您在项目中包含 android 支持库版本 18 或更高版本,则可以将资源 id 替换simple_spinner_dropdown_itemsupport_simple_spinner_dropdown_item. 这将删除单选按钮。

于 2013-08-22T15:48:02.287 回答
1

采用simple_dropdown_item_1line

于 2014-09-23T00:29:42.097 回答
0

执行此操作的“最干净”的方法(只需删除复选标记,不要触摸其他任何内容,包括文本样式、项目大小等)是创建自定义适配器(如上面的答案):

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()返回下拉列表项视图的方法。您可以在此处使用任何自定义视图,但如果您想坚持使用默认视图,您可能应该使用上面的代码。

于 2013-03-27T08:32:49.517 回答