我做了一个微调器,当它上面只有一个项目时我想禁用它,但是我不喜欢文本在被禁用时的灰色外观。我已经尝试使用.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)而不是可选择的。
答案 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;
}
});