Я пытаюсь изменить цвет контура или границы textInputLayout, я не знаю, почему он не меняется, я ищу и нахожу некоторые решения, но у меня не сработало.
здесь я помещаю стиль, а затем применяю его в textInputLayout
<style name = "WhiteOutlineBox" parent = "Widget.MaterialComponents.TextInputLayout.OutlineBox">
<item name = "boxStrokeColor">@color/snow </item>
<item name = "hintTextAppearance">@style/TextLabel</item>
<item name = "android:textColorHint">@color/snow</item>
<item name = "passwordToggleTint">@color/snow</item>
<item name = "colorControlNormal">@color/snow</item>
<item name = "colorControlActivated">@color/snow</item>
<item name = "colorControlHighlight">@color/snow</item>
<item name = "colorPrimary">@color/snow</item>
<item name = "colorPrimaryDark">@color/snow</item>
<item name = "colorAccent">@color/snow</item>
</style>
<!-- this style for the hint text lable in textInputLayout -->
<style name = "TextLabel" parent = "TextAppearance.Design.Hint">
<item name = "android:textSize">12sp</item>
<item name = "android:textColor">@color/snow</item>
</style>
здесь код его применения в textInputLayout в xml
<android.support.design.widget.TextInputLayout
android:id = "@+id/ed_oldPass"
style = "@style/WhiteOutlineBox"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_marginStart = "32dp"
android:layout_marginEnd = "32dp"
android:layout_marginTop = "50dp"
app:passwordToggleEnabled = "true">
<android.support.design.widget.TextInputEditText
style = "@style/WhiteOutlineBox"
android:layout_width = "match_parent"
android:layout_height = "56dp"
android:background = "@color/snow"
android:textColor = "@color/snow"
android:layout_marginBottom = "10dp"
android:hint = "@string/old_pass_ed_hint"
android:inputType = "textPassword"
android:paddingEnd = "10dp"
android:paddingStart = "10dp" />
</android.support.design.widget.TextInputLayout>
цвет обводки, hintTextAppearence, цвет подсказки и передача цвета оттенка измененный, но другие нет, я хочу изменить цвет границы, когда он не сфокусирован, как это сделать? пожалуйста, помогите и заранее спасибо
@Sotti, спасибо, это поможет, но если я хочу изменить это на некоторых страницах, как это сделать?
Учитывая, что все очень взломано, я бы не знал, как это сделать. Я очень удивлен отсутствием базовой настройки TextInputLayout.
добавьте это в свой color.xml
<color name = "mtrl_textinput_default_box_stroke_color">#BDC3C7</color>
он отменяет цвет несфокусированного контура по умолчанию
но весь textinputlayout меняется. Не для конкретной темы активности
Существует проблема, если кто-то хочет изменить только один TextInputLayout программно, проблема в том, что свойство defaultStrokeColor недоступно, единственный способ изменить его - переопределить цвет mtrl_textinput_default_box_stroke_color или использовать цвет списка состояний, но в обоих случаях вам нужны стили на XML.
С другой стороны, свойство FocusStrokeColor доступно через setBoxStrokeColor, поэтому его можно изменить программно без какого-либо специального кода.
Решение для этого, если отражение - вариант для вас, конечно, состоит в том, чтобы изменить доступность свойства во время выполнения, следующий код выполняет работу с материалом-1.1.0:
fun TextInputLayout.setDefaultStrokeColor(
color: Int
) {
try {
val defaultStrokeColor = TextInputLayout::class.java.getDeclaredField("defaultStrokeColor")
defaultStrokeColor.isAccessible = true
defaultStrokeColor.set(this, color)
} catch (e: NoSuchFieldException) {
// failed to change the color
}
}
использует его как функция расширения:
yourView.setDefaultStrokeColor(yourColor)
Вы можете использовать атрибут boxStrokeColor, он может работать с селектором.
Используйте что-то вроде:
<com.google.android.material.textfield.TextInputLayout
app:boxStrokeColor = "@color/text_input_layout_stroke_color"
..>
или
<style name = "WhiteOutlineBox" parent = "Widget.MaterialComponents.TextInputLayout.OutlineBox">
<item name = "boxStrokeColor">@color/text_input_layout_stroke_color</item>
</style>
с:
<selector xmlns:android = "http://schemas.android.com/apk/res/android">
<item android:alpha = "..." android:color = "@color/...." android:state_focused = "true"/>
<item android:alpha = "..." android:color = "@color/...." android:state_hovered = "true"/>
<item android:alpha = "..." android:color = "@color/...." android:state_enabled = "false"/>
<item android:alpha = "..." android:color = "@color/...."/> <!-- unfocused -->
</selector>
Лучший ответ, который я нашел до сих пор, -> stackoverflow.com/a/50818399/1177959