2016-08-30 5 views
6

enter image description hereमुखौटा पासवर्ड चयनकर्ता

का रंग बदलना आप चित्र में देख सकते हैं मैं एक काले रंग की पृष्ठभूमि और सफेद पाठ के साथ एक Android एप्लिकेशन है। लेकिन वहाँ एक "शो पाठ" आइकन है कि एक "आंख" की तरह लग रहा है कि इस का रंग बदलने के लिए रास्ता?

activity_login.xml वास्तव में है और यह रूप में अच्छी तरह काला है :(। है

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fitsSystemWindows="true" 
    android:background="@color/black"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="56dp" 
     android:paddingLeft="24dp" 
     android:paddingRight="24dp"> 

     <ImageView android:src="@drawable/logo" 
      android:layout_width="wrap_content" 
      android:layout_height="72dp" 
      android:layout_marginBottom="24dp" 
      android:layout_gravity="center_horizontal" /> 

     <!-- Email Label --> 
     <android.support.design.widget.TextInputLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="8dp" 
      android:layout_marginBottom="8dp" 
      android:textColorHint="#ffffff"> 
      <EditText android:id="@+id/input_email" 
       android:theme="@style/MyEditTextTheme" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="textEmailAddress" 
       android:hint="E-Mail Address"/> 
     </android.support.design.widget.TextInputLayout> 

     <!-- Password Label --> 
     <android.support.design.widget.TextInputLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="8dp" 
      android:layout_marginBottom="8dp" 
      android:textColor="#ffffff" 
      android:textColorHint="#ffffff"> 
      <EditText android:id="@+id/input_password" 
       android:theme="@style/MyEditTextTheme" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="textPassword" 
       android:hint="Password"/> 
     </android.support.design.widget.TextInputLayout> 

     <android.support.v7.widget.AppCompatButton 
      android:id="@+id/btn_login" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="24dp" 
      android:layout_marginBottom="24dp" 
      android:padding="12dp" 
      android:text="Login"/> 

     <TextView android:id="@+id/link_signup" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="24dp" 
      android:text="No account yet? Create one" 
      android:textColor="#ffffff" 
      android:gravity="center" 
      android:textSize="16dip"/> 

    </LinearLayout> 
</ScrollView> 

strings.xml

<resources> 
    <color name="bg_color">#ffffff</color> 
    <color name="black">#222222</color> 
    <style name="MyEditTextTheme"> 
     <item name="colorControlNormal">#ffffff</item> 
     <item name="colorControlActivated">#ffffff</item> 
     <item name="colorControlHighlight">#ffffff</item> 
     <item name="colorAccent">@android:color/white</item> 
     <item name="android:textColor">#ffffff</item> 
     <item name="android:textColorHint">#ffffff</item> 
    </style> 
</resources> 

उत्तर

11

ठीक है लोग मुझे सही जवाब मिल गया है, इसके का रंग बदला जा एक तरीका है। https://developer.android.com/reference/android/support/design/widget/TextInputLayout.html#attr_android.support.design:passwordToggleTint

setPasswordVisibilityToggleTintList(ColorStateList) 

अद्यतन: आप सीधे TextInputLayout में निम्न विशेषता जोड़ सकते हैं:

app:passwordToggleTint="#FFF" 
+0

Awesomely भयानक –

0

जोड़े drawable फ़ाइल selector.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@color/dim_orange_btn_pressed" /> 
    <item android:state_focused="true" android:drawable="@color/dim_orange_btn_pressed" /> 
    <item android:drawable="@android:color/white" /> 
</selector> 

अपने EditText थी जोड़ने रों लाइन android:background="@drawable/selector"

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
      <EditText android:id="@+id/txt_pass" 
      android:theme="@style/MyEditTextTheme" 
      android:layout_width="match_parent" 
      android:background="@drawable/selector" 
      android:layout_height="wrap_content" 
      android:inputType="textPassword" 
      android:hint="E-Mail Address"/> 

     <ImageButton 
     android:id="@+id/btn_eye" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:src="@drawable/eye" 
     /> 
    </LinearLayout> 

अपने कोड में:

buttonEye.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if(event.getAction() == MotionEvent.ACTION_DOWN) { 

      txt_pass.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 

     } else if (event.getAction() == MotionEvent.ACTION_UP) { 

      txt_pass.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 
     } 
    } 
}; 
+0

वाह उपयोगी संपादन और त्वरित प्रतिक्रिया के लिए धन्यवाद! :), मैंने इस संपादन की कोशिश की लेकिन यह कहा कि मुझे प्रत्येक आइटम के लिए एक नाम चाहिए, क्या इससे कोई फर्क नहीं पड़ता कि आइटम नाम क्या हैं? माफ करना कुल नोब। यदि आप और अधिक व्याख्या करने के लिए बहुत दयालु होंगे। – rapid3642

+0

आपके संपादन के साथ और अधिक स्पष्ट होने के लिए धन्यवाद, हालांकि मैंने ऐसा किया लेकिन यह पूरे क्षेत्र को सफेद बनाता है, लक्ष्य मैं प्राप्त करने की कोशिश कर रहा हूं केवल "आंख" या "पासवर्ड मुखौटा संकेतक" सफेद बनाना है। क्या इसे करने का कोई तरीका है? मुझे खेद है अगर मैं पहले स्पष्ट नहीं था। – rapid3642

+0

मैं गलत तरीके से गलत हो सकता था, लेकिन मुझे लगता है कि एक श्रोता जोड़ने और इसे दिखाने या छिपाने के लिए सेट करने से रंग परिवर्तन को पूरा नहीं किया जा सकता है, जो कि मैं प्राप्त करने की कोशिश कर रहा हूं, एक नोब हूं, इसलिए शायद मैं गलत हूं लेकिन अगर मैं कृपया समझाऊं तो मैं और समझ सकता हूं :) – rapid3642

4

rapid3642 के जवाब सही दिशा में इशारा किया लेकिन मैं अभी भी पता लगाने के लिए वास्तव में क्या काम करेगा की जरूरत है।

अपने टॉगल drawable का रंग बदलने के लिए इन चरणों का पालन करें:

  1. बनाएं ~/res/color/ में selector_password_visibility_toggle:

    <?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
        <!-- When password is shown as text, the drawable will be off_white coloured --> 
        <item android:color="@color/off_white" android:state_checked="true"/> 
        <item android:color="@android:color/white"/> 
    
    </selector> 
    
  2. नीचे के रूप में अपने TextInputLayout को passwordToggleTintMode और passwordToggleTint जोड़ें,:

    <android.support.design.widget.TextInputLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        app:passwordToggleTintMode="src_atop" 
        app:passwordToggleTint="@color/selector_password_visibility_toggle" 
        app:passwordToggleEnabled="true"> 
    

अब आपके TextInputLayout में इसका रंग बदलने योग्य रंग बदल जाएगा।

+0

आपके लिए क्या काम किया है जोड़ने के लिए धन्यवाद! मुझे उम्मीद है कि यह दूसरों की मदद करता है! :) – rapid3642

0

यदि आप edittext या texteditlayout के लिए पृष्ठभूमि का उपयोग करते हैं तो पासवर्ड दृश्यता टॉगल पृष्ठभूमि के नीचे छिपा हुआ है। तो पृष्ठभूमि को हटाएं या एक कस्टम शैली बनाएं और इसे xml लेआउट में edittext के लिए थीम के रूप में बनाएं।

<style name="EditText_theme" parent=""> 
     <item name="passwordToggleTintMode">src_over</item> 
    </style> 

आप अभी भी समस्या का सामना करना पड़ता है या यदि आप नहीं रखा है किसी भी पृष्ठभूमि तो स्वयं ऐप क्योंकि मुख्य रंग वहाँ निर्धारित कर रहे हैं के विषय को बदलते हैं।

यहां अन्य कामकाज है जो काम नहीं करता है। यह मुझे Google डॉक्स से ही मिला,

<style name="EditText_theme" parent=""> 
     <item name="passwordToggleTint">@color/white</item> 
    </style> 
3

निम्न xmlns जोड़ें: अपने लेआउट में ऐप।

xmlns:app="http://schemas.android.com/apk/res-auto"

अब सेट तदनुसार passwordToggleEnabled&passwordToggleTint EditText में

app:passwordToggleEnabled = "true"
app:passwordToggleTint="#FFFFFF"

0

यहाँ यह प्रोग्रामैटिक रूप से ऐसा करने के लिए एक अच्छा तरीका है:

setPasswordVisibilityToggleTintList(AppCompatResources.getColorStateList(context, R.color.white)); 

इस विधि को TextInputLayout ऑब्जेक्ट पर कॉल करें।

संबंधित मुद्दे