如何让禁用的微调器看起来不被禁用?

时间:2016-02-17 00:07:40

标签: android spinner

我做了一个微调器,当它上面只有一个项目时我想禁用它,但是我不喜欢文本在被禁用时的灰色外观。我已经尝试使用.setClickable(false);但它没有用。我已经看过很多帖子,其他方面有一个看起来不同于默认值的残疾人,但它没有帮助我。
我现在的代码是:

if (list.size() > 1) {
    list.setlistNumber("Select a list");
    list.add(0, list);
    mListSpinner.setClickable(true);
    return list;
} else {
    mAccountSpinner.setEnabled(false);
    // mListSpinner.set;
    t = 1;

但我不知道如何获得启用(false),看起来像启用(true)而不是可选择的。

4 个答案:

答案 0 :(得分:0)

我希望这会对你有所帮助。

在xml中

           <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:gravity="center">

            <Spinner
                android:id="@+id/spinner"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="5dp" />

            <LinearLayout
                android:id="@+id/layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#00000000"
                android:clickable="false"
                android:orientation="vertical" />
        </RelativeLayout>

在java中:

这是我测试的代码。

 List<String> list = new ArrayList<>();
    list.add("Please select a item");
    list.add("Item1");
    list.add("Item2");
    list.add("Item3");

    LinearLayout layout = (LinearLayout) findViewById(R.id.layout);

    ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, list);

    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    spinner.setAdapter(adapter);

    if (list.size() > 1) {
        layout.setClickable(false);
    } else {
        layout.setClickable(true);
    }

答案 1 :(得分:0)

只需删除侦听器,以便除了保持默认行为之外不做任何事情。

spinner.setOnClickListener(null);

如果要再次启用微调器,只需再次添加侦听器

spinner.setOnClickListener(myListener);

答案 2 :(得分:0)

使用自定义样式背景覆盖,没有禁用的drawable。

   <Spinner
      ...
      android:background="@drawable/spinner_background"
      ...
   />

RES /抽拉/ spinner_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- changed from apptheme_spinner_disabled_holo_light -->
<item android:state_enabled="false"
      android:drawable="@drawable/apptheme_spinner_default_holo_light" />
<item android:state_pressed="true"
      android:drawable="@drawable/apptheme_spinner_pressed_holo_light" />
<item android:state_pressed="false" android:state_focused="true"
      android:drawable="@drawable/apptheme_spinner_focused_holo_light" />
<item android:drawable="@drawable/apptheme_spinner_default_holo_light" />

drawables将取决于您的应用程序的样式。例如,您可以生成新的全息样式drawable here

至于文本颜色,这应该非常相似,添加一个类似的xml描述符: -

   <Spinner
      ...
      android:textColor="@color/spinner_text"
      ...
   />

RES /值/ spinner_text.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_focused="true" android:color="@color/black"/>
   <item android:state_pressed="true" android:state_enabled="false" android:color="@color/black" />
   <item android:state_enabled="false" android:color="@color/black" />
   <item android:color="@color/black"/>
</selector>

甚至不确定是否需要,您可以直接设置颜色:

       <Spinner
      ...
      android:textColor="#000000"
      ...
   />

答案 3 :(得分:0)

您可以尝试以下方法:

spinner.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return true;
    }
});