2016-08-30 64 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> 

回答

0

添加繪製文件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 THI s的線路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

哇感謝您的有用編輯和快速響應! :),我試過這個編輯,但它說我需要每個項目的名稱,它是什麼項目名稱是重要的?總的noob在這裏對不起。如果你會這麼好解釋更多。 – rapid3642

+0

謝謝你的編輯更清晰,但是我做到了這一點,但它使整個領域變成了白色,我試圖實現的目標是讓「眼睛」或「密碼蒙版指示符」變成白色。有沒有辦法做到這一點?對不起,如果我以前不清楚。 – rapid3642

+0

我可以肯定是錯的,但我不認爲添加一個聽衆,並將其設置爲顯示或隱藏將完成即時通訊嘗試實現的顏色變化,即時通訊一個noob,所以也許我在這裏錯了,但如果我請解釋,所以我可以瞭解更多:) – rapid3642

4

rapid3642的回答指出了正確的方向,但我仍然需要找出究竟會的工作是什麼。

按照以下步驟來更改切換繪製的顏色:

  1. 創建selector_password_visibility_toggle~/res/color/

    <?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. 添加passwordToggleTintModepasswordToggleTintTextInputLayout,如下:

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

如果您仍然面臨着問題,或者如果你沒有保持任何的背景,然後更改應用程序本身,因爲主色調確定存在的主題。

下面是其他解決方法,它不適用於。這我從谷歌文檔本身,

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

在您的佈局中添加以下xmlns:應用程序。

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

現在設置中的EditText passwordToggleEnabled&passwordToggleTint相應

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

0

這裏是做編程的好方法:

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

在TextInputLayout對象上調用此方法。