2016-02-17 67 views
2

我做了一个微调,当它只有一个项目时,我想禁用它,但我不喜欢文本在禁用时出现的灰色外观。我已经尝试使用.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; 

,但我对如何获得启用(假的)不知道,看起来像一个使能(真)而不被选择。

回答

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

试过这个,不能作为微调器工作的默认方式,mak即使它是错误的(或者至少当我尝试它不适用于我时),它仍然是可点击的true – Clow

+0

我更新了我测试的Java代码。见上面 – Sabari

+0

我不知道它是否是我的电脑,但我无法工作,但如果别人告诉我为他们工作,我会接受这一个 – Clow

0

只是删除侦听器,以便不做任何事情,但保持默认行为。

spinner.setOnClickListener(null); 

如果您想再次启用微调,只需添加再次聆听

spinner.setOnClickListener(myListener); 
+0

我试过这个,得到这个异常:java.lang.RuntimeException :不要调用setOnClickListener。您可能需要setOnItemClickListener。我也试着用setOnItemClickListener,但得到这个其他异常:setOnItemClickListener不能用于微调。有任何想法吗? – Clow

0

覆盖与无残疾绘制一个自定义风格的背景。

<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" /> 

的绘图资源,将取决于您的应用程序的风格。例如,您可以生成新的全息样式可绘图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" 
     ... 
    /> 
+0

你能再详述一下吗?否则我认为它应该是一个评论,我也不是很擅长android,但问题不是背景,而是文本,这会修复吗? – Clow

+0

是的意思是当我有一个时刻,而且从未发生过的时候添加细节。这应该阻止文本和背景改变 –