Android: textColor of disabled button in selector not showing?

前端 未结 5 1353
梦毁少年i
梦毁少年i 2020-11-30 21:24

I am trying to make a button with a selector my button can have the following states:

  • Enabled/Disabled
  • Pressed/Not Pressed

According to

相关标签:
5条回答
  • 2020-11-30 21:28
    <Button android:id="@+id/reserve_button"
            android:text="@string/reserve_button"
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="20dp"
            android:paddingRight="15dp"
            android:layout_gravity="left"
            style="@style/buttonStyle"
            android:background="@drawable/button_selector" />
    

    I cannot see diabling of your button in your layout xml. add this to your button layout.

    android:enabled="false"
    

    so your Button layout will be,

    <Button android:id="@+id/reserve_button"
            android:text="@string/reserve_button"
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="20dp"
            android:enabled="false"
            android:paddingRight="15dp"
            android:layout_gravity="left"
            style="@style/buttonStyle"
            android:background="@drawable/button_selector" />
    
    0 讨论(0)
  • 2020-11-30 21:37

    1.Create a color folder in /res/ folder and in color folder create on xml:

    text_color_selector.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- disabled state --> 
    <item android:state_enabled="false" android:color="#776678" /> 
     <item android:color="#ffffff"/>
    </selector>
    

    2.Now Create a xml layout:-

     <Button
    
            android:id="@+id/button_search"
    
            android:layout_width="652dp"
    
            android:layout_height="48dp"
    
            android:layout_alignParentLeft="true"
    
            android:layout_alignParentTop="true"
    
            android:layout_marginTop="18dp"
    
            android:background="@android:color/transparent"
    
            android:text="Hello Bhaskar"
    
            android:textColor="@color/text_color_selector"/>  
    
    0 讨论(0)
  • 2020-11-30 21:39

    You can create a color list

    file location:

    res/color/filename.xml
    

    The filename will be used as the resource ID.

    resource reference:

    In Java: R.color.filename

    In XML: @[package:]color/filename

    syntax:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item
            android:color="hex_color"
            android:state_pressed=["true" | "false"]
            android:state_focused=["true" | "false"]
            android:state_selected=["true" | "false"]
            android:state_checkable=["true" | "false"]
            android:state_checked=["true" | "false"]
            android:state_enabled=["true" | "false"]
            android:state_window_focused=["true" | "false"] />
    </selector>
    

    Example:

    XML file saved at res/color/button_text.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true"
              android:color="#ffff0000"/> <!-- pressed -->
        <item android:state_focused="true"
              android:color="#ff0000ff"/> <!-- focused -->
        <item android:color="#ff000000"/> <!-- default -->
    </selector>
    

    This layout XML will apply the color list to a View:

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_text"
        android:textColor="@color/button_text" />
    

    Refer: Color List Reference

    0 讨论(0)
  • 2020-11-30 21:41

    You need to also create a ColorStateList for text colors identifying different states.

    Do the following:

    1. Create another XML file in res\color named something like text_color.xml.

      <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- disabled state -->
        <item android:state_enabled="false" android:color="#9D9FA2" /> 
        <item android:color="#000"/>
      </selector>
      
    2. In your style.xml, put a reference to that text_color.xml file as follows:

      <style name="buttonStyle" parent="@android:style/Widget.Button">
        <item name="android:textStyle">bold</item>
        <item name="android:textColor">@color/text_color</item>
        <item name="android:textSize">18sp</item>
      </style>
      

    This should resolve your issue.

    0 讨论(0)
  • 2020-11-30 21:45

    The most easy solution is to set color filter to the background image of and button as I saw here

    You can do as follow:

    if ('need to set button disable')
        button.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
    else
        button.getBackground().setColorFilter(null);
    

    Hope I helped someone...

    0 讨论(0)
提交回复
热议问题