Android tasarım kitaplığı kullanıyorum TextinputLayout. Ancak ipucu rengini, etiket rengini ve EditTextiç kısmın alt çizgi rengini özelleştiremedi TextinputLayout. Lütfen yardım et.
Android tasarım kitaplığı kullanıyorum TextinputLayout. Ancak ipucu rengini, etiket rengini ve EditTextiç kısmın alt çizgi rengini özelleştiremedi TextinputLayout. Lütfen yardım et.
Yanıtlar:
<item name="colorControlNormal">#c5c5c5</item>
<item name="colorControlActivated">@color/accent</item>
<item name="colorControlHighlight">@color/accent</item>
Daha fazla bilgi için bu konuyu kontrol edin .
<style name="MyHintStyle" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/main_color</item>
</style>
ve şu şekilde kullanın:
<android.support.design.widget.TextInputLayout
...
app:hintTextAppearance="@style/MyHintStyle">
<android.support.design.widget.TextInputLayout
...
app:hintTextAppearance="@style/MyHintStyle"
android:textColorHint="#c1c2c4">
@AlbAtNf sayesinde
android:textColorHintiçin TextInputLayoutXML.
Fedor Kazakov ve diğerlerinin cevaplarına dayanarak, bir varsayılan yapılandırma oluşturdum.
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="Widget.Design.TextInputLayout" parent="AppTheme">
<item name="hintTextAppearance">@style/AppTheme.TextFloatLabelAppearance</item>
<item name="errorTextAppearance">@style/AppTheme.TextErrorAppearance</item>
<item name="counterTextAppearance">@style/TextAppearance.Design.Counter</item>
<item name="counterOverflowTextAppearance">@style/TextAppearance.Design.Counter.Overflow</item>
</style>
<style name="AppTheme.TextFloatLabelAppearance" parent="TextAppearance.Design.Hint">
<!-- Floating label appearance here -->
<item name="android:textColor">@color/colorAccent</item>
<item name="android:textSize">20sp</item>
</style>
<style name="AppTheme.TextErrorAppearance" parent="TextAppearance.Design.Error">
<!-- Error message appearance here -->
<item name="android:textColor">#ff0000</item>
<item name="android:textSize">20sp</item>
</style>
</resources>
activity_layout.xml
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Text hint here"
android:text="5,2" />
</android.support.design.widget.TextInputLayout>
Odaklı:
Odaklanma olmadan:
Hata mesajı:
İle Malzeme Bileşenleri Kütüphanesi kullanabilirsiniz com.google.android.material.textfield.TextInputLayout.
Renkleri değiştirmek için özel bir stil uygulayabilirsiniz.
İpucu rengini değiştirmek için şu nitelikleri kullanmanız gerekir:
hintTextColorve android:textColorHint.
<style name="Custom_textinputlayout_filledbox" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
<!-- The color of the label when it is collapsed and the text field is active -->
<item name="hintTextColor">?attr/colorPrimary</item>
<!-- The color of the label in all other text field states (such as resting and disabled) -->
<item name="android:textColorHint">@color/selector_hint_text_color</item>
</style>
İçin bir seçici kullanmalısınız android:textColorHint. Gibi bir şey:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
<item android:alpha="0.6" android:color="?attr/colorOnSurface"/>
</selector>
Alt çizgi rengini değiştirmek için size özellik kullanmak zorunda: boxStrokeColor.
<style name="Custom_textinputlayout_filledbox" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
....
<item name="boxStrokeColor">@color/selector_stroke_color</item>
</style>
Ayrıca bu durumda bir seçici kullanmalısınız. Gibi bir şey:
<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>
Bu nitelikleri düzeninize de uygulayabilirsiniz:
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
app:boxStrokeColor="@color/selector_stroke_color"
app:hintTextColor="?attr/colorPrimary"
android:textColorHint="@color/selector_hint_text_color"
...>
boxStrokeColor. Örnekte selector_stroke_colorözellikle son satır:<item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
Bu özelliği Edittext etiketine ekleyin ve keyfini çıkarın:
android:backgroundTint="@color/colorWhite"
Bu Blog Gönderisi , çeşitli stil özelliklerini açıklar EditTextve AutoCompleteTextViewtamamlar TextInputLayout.
İçin EditTextve 22.1.0+ lib AppCompat bazı tema ile ilgili ayarları ile teması niteliğini ayarlayabilirsiniz:
<style name="StyledTilEditTextTheme">
<item name="android:imeOptions">actionNext</item>
<item name="android:singleLine">true</item>
<item name="colorControlNormal">@color/greyLight</item>
<item name="colorControlActivated">@color/blue</item>
<item name="android:textColorPrimary">@color/blue</item>
<item name="android:textSize">@dimen/styledtil_edit_text_size</item>
</style>
<style name="StyledTilEditText">
<item name="android:theme">@style/StyledTilEditTextTheme</item>
<item name="android:paddingTop">4dp</item>
</style>
ve aşağıdakilere uygulayın EditText:
<EditText
android:id="@+id/etEditText"
style="@style/StyledTilEditText"
Çünkü AutoCompleteTextViewişler daha karmaşıktır çünkü onu sarmak TextInputLayoutve bu temayı uygulamak yüzen etiket davranışını bozar. Bunu kodla düzeltmeniz gerekiyor:
private void setStyleForTextForAutoComplete(int color) {
Drawable wrappedDrawable = DrawableCompat.wrap(autoCompleteTextView.getBackground());
DrawableCompat.setTint(wrappedDrawable, color);
autoCompleteTextView.setBackgroundDrawable(wrappedDrawable);
}
ve içinde Activity.onCreate:
setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight));
autoCompleteTextView.setOnFocusChangeListener((v, hasFocus) -> {
if(hasFocus) {
setStyleForTextForAutoComplete(getResources().getColor(R.color.blue));
} else {
if(autoCompleteTextView.getText().length() == 0) {
setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight));
}
}
});
Eğer değiştirmek istiyorsanız bar / çizgi rengini ve ipucu metin rengi arasında TextInputLayout(vurgu rengi normalde ne), o zaman sadece bu stil oluşturmak:
<style name="MyStyle">
<item name="colorAccent">@color/your_color</item>
</style>
Ardından bunu temaTextInputLayout olarak uygulamanıza uygulayın :
<android.support.design.widget.TextInputLayout
...
app:theme="@style/MyStyle" />
Bu, temel olarak bir temayı (stili değil) tek bir görünüme (tüm aktivitenin aksine) ayarlar .
<style name="Widget.Design.TextInputLayout" parent="android:Widget">
<item name="hintTextAppearance">@style/TextAppearance.Design.Hint</item>
<item name="errorTextAppearance">@style/TextAppearance.Design.Error</item>
</style>
Düzen için bu stili geçersiz kılabilirsiniz
Ayrıca iç EditText öğesi stilini de değiştirebilirsiniz.
<style name="EditScreenTextInputLayoutStyle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorControlNormal">@color/actionBar_background</item>
<item name="colorControlActivated">@color/actionBar_background</item>
<item name="colorControlHighlight">@color/actionBar_background</item>
<item name="colorAccent">@color/actionBar_background</item>
<item name="android:textColorHint">@color/actionBar_background</item>
</style>
bu stili TextInputLayout'a uygulayın
android:theme="@style/EditScreenTextInputLayoutStyle"
bir TextinputLayout bir görünüm değil, ama bir Layoutçok güzel tarif ettiği, Dimitrios Tsigouris içinde burada yaptığı blog post . Bu nedenle, yalnızca Styleiçin olan a'ya ihtiyacınız yoktur Views, ancak a kullanın Theme. Blog gönderisinin ardından aşağıdaki çözümü buldum:
Senin başlayın styles.xmlile
<style name="TextInputLayoutAppearance" parent="Widget.Design.TextInputLayout">
<!-- reference our hint & error styles -->
<item name="android:textColor">@color/your_colour_here</item>
<item name="android:textColorHint">@color/your_colour_here</item>
<item name="colorControlNormal">@color/your_colour_here</item>
<item name="colorControlActivated">@color/your_colour_here</item>
<item name="colorControlHighlight">@color/your_colour_here</item>
</style>
Ve düzeninize ekleyin
<com.google.android.material.textfield.TextInputLayout
android:theme="@style/TextInputLayoutAppearance"
...