Android: चयनकर्ता में अक्षम बटन का textColor नहीं दिखा रहा है?


98

मैं एक चयनकर्ता के साथ एक बटन बनाने की कोशिश कर रहा हूँ मेरे बटन में निम्नलिखित अवस्थाएँ हो सकती हैं:

  • सक्षम अक्षम
  • दबाया / दबाया नहीं गया

उपर्युक्त राज्यों के अनुसार। मुझे बटन के हेरफेर करने की आवश्यकता है:

  • लिखावट का रंग
  • पृष्ठभूमि छवि

बटन मेरे निष्क्रिय होने की शुरुआत करता है, इसलिए इसमें विकलांग टेक्स्टकॉल और अक्षम बटन पृष्ठभूमि होनी चाहिए। लेकिन मैं डिफ़ॉल्ट textColor (शैली में निर्दिष्ट) और कोई पृष्ठभूमि छवि नहीं देख सकता!

यहां मेरा चयनकर्ता बटन_सेलेक्टर.एक्सएमएल है

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="false"
        android:state_enabled="false"
        android:textColor="#9D9FA2"
        android:drawable="@drawable/button" />    

    <item android:state_pressed="true"
        android:state_enabled="true"
        android:drawable="@drawable/button_pressed"/>

    <item android:state_pressed="true"
        android:state_enabled="false"
        android:textColor="#9D9FA2"
        android:drawable="@drawable/button"/>

    <item android:state_pressed="false"
        android:state_enabled="true"
        android:drawable="@drawable/button"/>    

</selector>

और यहाँ मेरे लेआउट में मेरा बटन घोषणा है। xml

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

और अंत में यह मेरी शैली है (जहां मेरा डिफ़ॉल्ट टेक्स्ट कलर सेट है)

<?xml version="1.0" encoding="utf-8"?>

 <resources>

     <style name="buttonStyle">
      <item name="android:textStyle">bold</item>
      <item name="android:textColor">#282780</item>
      <item name="android:textSize">18sp</item>
     </style>

</resources>

कृपया सहायता कीजिए!

जवाबों:


251

आपको ColorStateListअलग-अलग राज्यों की पहचान करने वाले टेक्स्ट रंगों के लिए भी निर्माण करना होगा ।

निम्न कार्य करें:

  1. res\colorनाम की एक और XML फ़ाइल बनाएं जैसे कुछ 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. अपने में style.xml, उस text_color.xmlफ़ाइल का एक संदर्भ इस प्रकार है:

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

इससे आपकी समस्या का समाधान होना चाहिए।


1
अगर आपको @ drawable / text_color द्वारा इसे संदर्भित करना है, तो आपको अपने text_color.xml फ़ाइल को / res / drawable (बजाय / res / color) को बचाने की आवश्यकता नहीं है?
इरवान

1
@ इरान सुधार के लिए धन्यवाद। वास्तव में यदि आप संपादन इतिहास को देखते हैं, तो मैंने इसे @colorड्रा करने योग्य फ़ोल्डर के रूप में पोस्ट किया है, और कुछ अच्छे व्यक्ति ने इसे रंग में संपादित किया, लेकिन इसे ब्यूटाइल में अपडेट करना भूल गया । अब इसका अद्यतन।
आदिल सोमरो

4
text_color.xmlसंकलन नहीं करता है (मेरे लिए, कम से कम) जब तक मैं इसे drawableफ़ोल्डर में नहीं रखता , जिसके लिए इसे संदर्भित करने की आवश्यकता होती है@drawable/text_color
अल लेलोपैथ

@ मिक्की हाँ, आप सही हैं, इसलिए यदि आप संपादन इतिहास को देखते हैं, तो इसे शुरू में ड्रॉबल में सुझाया गया था, लेकिन किसी ने इसे रंग फ़ोल्डर में अपडेट किया है, मैंने अब इसे ठीक कर लिया है।
आदिल सोमारो

1
@ D3LIC1OU5 यदि आप टिप्पणियों को देखते हैं, तो दोनों तरीकों से काम करने के लिए कहा गया है। मैंने अभी प्रलेखन की सलाह दी है और रंग राज्य सूची संसाधन केcolor लिए सही फ़ोल्डर है आपका संपादन स्वागत योग्य है।
आदिल सूमरो

7

1. एक रंग फ़ोल्डर में / Res / फ़ोल्डर और रंग फ़ोल्डर में बनाएँ 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.अब एक xml लेआउट बनाएँ: -

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

4

सबसे आसान उपाय यह है कि जैसा मैंने यहां देखा था उसकी पृष्ठभूमि की छवि और बटन के लिए रंगीन फ़िल्टर सेट करें

आप निम्नानुसार कर सकते हैं:

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

आशा है कि मैंने किसी की मदद की ...


यह गतिशील रूप से करने का एक अच्छा तरीका है, जब आपके पास पहले से बटन पृष्ठभूमि की छवि नहीं है। लेकिन यह टेक्स्ट कलर का ध्यान नहीं रखता है।
एरन गोल्डिन

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

मैं आपके लेआउट xml में आपके बटन को अक्षम नहीं देख सकता। इसे अपने बटन लेआउट में जोड़ें।

android:enabled="false"

तो आपका बटन लेआउट होगा,

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

@ अकीफ हामिद मैं अपने ऑनक्रैच () विधि में प्रोग्राम बटन। SetEnabled (झूठा) करता हूं
नूरन एच

-1

आप एक रंग सूची बना सकते हैं

फाइल का पता:

res/color/filename.xml

फ़ाइलनाम का उपयोग संसाधन ID के रूप में किया जाएगा।

संसाधन संदर्भ:

जावा में: R.color.filename

XML में: @[package:]color/filename

वाक्य - विन्यास:

<?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>

उदाहरण:

XML फ़ाइल यहां सहेजी गई 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>

यह लेआउट XML रंग सूची को दृश्य पर लागू करेगा:

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

संदर्भ: रंग सूची संदर्भ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.