Проблема: изменение цвета границы или обводки поля для несосредоточенного TextInputLayout в Android - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть очень специфическая проблема для изменения схемы текстового поля для TextInputLayout, когда оно не сфокусировано. Я не могу найти атрибут для изменения цвета границы моего «не сфокусированного» текстового поля.

Вот наглядный пример того, что я пытаюсь сделать:

Цвет этого (текстовое поле): рамка не белая. в настоящее время его не сосредоточены. После того, как я нажму на него, он станет белым:

Я не знаю, что мне нужно изменить, не похоже, что есть атрибут для его изменения.

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

Вот мой код xml для текстового поля:

 <other layouts ... >
     <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="70dp"
            android:layout_gravity="bottom"
            android:layout_margin="5dp"
            android:background="@drawable/item_recycler_view">

            <android.support.design.widget.TextInputLayout
                android:id="@+id/dialog_text_input_layout"
                style="@style/Widget.AppTheme.TextInputLayoutList"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Quick Add..."
                android:textColorHint="@color/colorWhite"
                app:boxStrokeColor="@color/colorWhite"
                app:errorEnabled="true"
                >

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/dialog_edit_text"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:maxLines="1"
                    android:textColor="@color/colorWhite"
                    android:textSize="14sp" />
            </android.support.design.widget.TextInputLayout>
        </RelativeLayout>
 </other layouts...>

А вот стили, которые я использую для этого:

<style name="TextAppearance.AppTheme.TextInputLayout.HintTextAlt" parent="TextAppearance.MaterialComponents.Subtitle2">
    <item name="android:textColor">@color/colorWhite</item>
</style>

<style name="Widget.AppTheme.TextInputLayoutList" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="hintTextAppearance">@style/TextAppearance.AppTheme.TextInputLayout.HintTextAlt</item>
    <item name="boxStrokeColor">@color/colorWhite</item>
    <item name="boxCornerRadiusBottomEnd">5dp</item>
    <item name="boxCornerRadiusBottomStart">5dp</item>
    <item name="boxCornerRadiusTopEnd">5dp</item>
    <item name="boxCornerRadiusTopStart">5dp</item>
    <item name="android:layout_margin">5dp</item>
</style>

Спасибо, любая помощь или предложения приветствуются!

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Ответ от Амджада был прав, но начиная с 1.1.0-alpha02 (возможно, даже alpha01) после того, как эта проблема была решена, можно определить цвет в списке состояний цвета с использованием того же атрибута boxStrokeColor, например как это делается в lib:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorPrimary" android:state_focused="true"/>
  <item android:alpha="0.87" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
  <item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
</selector>
0 голосов
/ 06 сентября 2018

Если вы хотите установить цвет для контура в несфокусированном режиме вместо черного по умолчанию, вы должны добавить эту строку в файл colors.xml, который заменит цвет по умолчанию для контура.

скопируйте эту строку как есть. Вы можете изменить цвет на то, что вы хотите.

<color name="mtrl_textinput_default_box_stroke_color">#fff</color>

до сих пор это будет работать, для большего контроля над TextInputLayout вы можете добавить этот стиль в styles.xml

<style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
    <item name="boxStrokeColor">#fff</item>
    <item name="boxStrokeWidth">2dp</item>
</style>

затем добавьте тему в TextInputLayout

android:theme="@style/TextInputLayoutStyle"
...