2016-03-17 2 views
0

У меня есть edittext, который находится на темном фоне. Конструкция экрана вызывает edittext с линией и белым текстом, чтобы быть видимым. Я понял, что это будет непростая задача, но я столкнулся с проблемой.Изменить цвет линии edittext для одного элемента управления?

Я смотрел StackOverflow уже на вопрос, но все ответы в основном указывают на изменение стиля всех элементов управления edittext во всем приложении; это не вариант, так как это затронет только 2 на одном экране.

Я пробовал следующее, но ни линия, ни подсказка не являются белыми; вместо этого оба по-прежнему черные. Текст, однако, белый, когда я ввожу что-то в элемент управления.

 <EditText 
      android:id="@+id/text_login" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/hint_login" 
      android:textColorHint="#FFFFFF" 
      android:imeOptions="actionNext" 
      android:singleLine="true" 
      android:textColor="#FFFFFF" 
      android:drawableBottom="#FFFFFF" 
      /> 

ВыделенныйBottom и textColorHint были попытками покрасить линию и текст подсказки белым цветом.

Есть ли у кого-нибудь предложения по поводу того, что мне здесь не хватает? Любая помощь будет оценена!

Спасибо!

ответ

1

Ибо, когда вы ориентируетесь API 21 и выше, вы должны использовать атрибут backgroundTint:

<EditText 
    android:id="@+id/text_login" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 

    android:hint="@string/hint_login" 

    android:textColor="@color/white" 
    android:backgroundTint="@color/white" 

    android:textColorHint="@android:color/darker_gray" 
    android:textColorHighlight="@color/colorPrimaryDark2" 

    android:imeOptions="actionNext" 
    android:singleLine="true" 

    /> 

Если yo u нацелены на уровни API ниже, чем 21, вы должны использовать пользовательскую возможность для изменения подчеркивания. Вы можете легко создать изображение с девятью патчами от this site, а затем использовать его как фон вашего представления.

+0

Это оказалось именно то, что мне нужно! Большое спасибо = D –

1

Предположим, у вас есть EditText на "black" background. Вы можете изменить код в соответствии с вашим фоном.

Создайте файл xml, который будет установлен в качестве фона EditText. XML-файл сказать bg.xml будет выглядеть -

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:top="-2dp" android:left="-2dp" android:right="-2dp"> 
     <shape android:shape="rectangle"> 
      <stroke android:width="1dp" android:color="#ffffffff" /> 
      <solid android:color="@android:color/black" /> //Change this color according to your background 
     </shape> 
    </item> 
</layer-list> 

И ваш EditText должно быть -

<EditText 
      android:id="@+id/text_login" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/hint_login" 
      android:textColorHint="#FFFFFF" 
      android:imeOptions="actionNext" 
      android:singleLine="true" 
      android:textColor="#FFFFFF" 
      android:background="@drawable/bg" 
      /> 
1

Существует простой способ решения этой проблемы. Вы можете использовать EditText с прозрачным фоном и с видом внизу. Установите цвет этого вида, и он будет выглядеть как линия.

enter image description here

layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/background_dark" 
    android:orientation="vertical" 
    android:padding="30dp"> 


    <EditText 
     android:id="@+id/text_login" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/transparent" 
     android:hint="Hint here" 
     android:imeOptions="actionNext" 
     android:singleLine="true" 
     android:textColor="#FFFFFF" 
     android:textColorHint="#FFFFFF" /> 

    <View 
     android:id="@+id/editTextBottom" 
     android:layout_width="match_parent" 
     android:layout_height="1dp" 
     android:background="@android:color/white" /> 
</LinearLayout> 

Днем Coding :)

Смежные вопросы