los*_*ion 8 android android-theme android-edittext android-styles material-design
我正在尝试设置材质EditText视图的样式:
<style name="AppTheme.EditText" parent="@style/Widget.AppCompat.EditText">
<item name="android:textColor">@color/white</item>
<item name="android:textColorHint">#8AFFFFFF</item>
<item name="colorControlNormal">@color/white</item>
<item name="colorControlActivated">@color/white</item>
<item name="colorControlHighlight">@color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
然后我在我的主题上应用样式:
<style name="AppTheme">
<item name="editTextStyle">@style/AppTheme.EditText</item>
</style>
Run Code Online (Sandbox Code Playgroud)
并将主题应用于活动:
<activity
android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateAlwaysHidden"
android:theme="@style/AppTheme">
Run Code Online (Sandbox Code Playgroud)
但是,这并没有改变下划线颜色.
我知道我可以更改accentColor以更改下划线颜色,但我不想这样做,因为我需要我的强调颜色与其他一些控件不同.
我可以设置控件下划线颜色吗?
Tin*_*ran 29
原因,它不工作:
colorControlNormal是的ATTR 主题,同时android:textColor是一个样式属性.要进行更改colorControlNormal,您必须覆盖主题,更改android:textColor值,您必须覆盖样式.没有命名的属性colorControlNormal的@style/Widget.AppCompat.EditText全部或任何父母.因此,在执行此操作时,您完全没有任何要求:
<style name="AppTheme.EditText" parent="@style/Widget.AppCompat.EditText">
<item name="colorControlNormal">@color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
解决方案:
要实际更改值colorControlNormal,您必须在主题中更改它.要在不更改活动主题的情况下执行此操作,您可以:
1 /创建仅包含您要更改的主题属性的ThemeOverlay:
<style name="AppTheme.EditText">
<item name="colorControlNormal">@color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
2 /仅在您的EditText视图中使用它:
<EditText
android:layout_width="match_parent"
android:theme="@style/AppTheme.EditText"
/>
Run Code Online (Sandbox Code Playgroud)
这里实际发生的是将使用View的主题属性(如果存在).活动的主题将用作后备.
您可以随时更改colorControlNormal活动的主题以影响整个活动.
| 归档时间: |
|
| 查看次数: |
7549 次 |
| 最近记录: |