我正在尝试为EditText(MyEditText)创建一个样式,它继承自基本主题并添加了额外的属性设置。
<style name="MyMaterialTheme" parent="MyMaterialTheme.Base">
<item name="homeAsUpIndicator">@drawable/ic_back_indicator</item>
</style>
<style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="MyEditText" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:background">#dbffb1</item>
</style>
当将MyEditText样式应用于EditText控件时,现有样式(来自主题)似乎被覆盖(如EditText下的行消失)。在布局中为EditText更改背景时会发生同样的事情。
我正在使用targetSdkVersion 23。 我想知道从默认主题覆盖单个属性的正确方法是什么。
以下是布局中EditText的代码(由@ 3amoura提出):
<EditText android:layout_width="match_parent"
android:layout_height="82dp"
android:id="@+id/et_description"
android:inputType="textMultiLine|textLongMessage"
android:lines="10"
android:hint="Describe your complaint in details"
android:gravity="top"
style="@style/MyEditText" />
答案 0 :(得分:1)
MyEditText的样式应该继承自 Widget.AppCompat.EditText 而不是 Theme.AppCompat.Light.DarkActionBar ,以便
<style name="MyEditText" parent="Widget.AppCompat.EditText">
<item name="android:background">#dbffb1</item>
然后使用EditText xml中的样式
答案 1 :(得分:0)
已修改
如果您只想添加绘制的线条的颜色 - &gt; setBackgroundTint
如果要更改背景颜色和线条颜色,则自定义图层列表或选择器将是唯一选项。样本图层列表
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#dbffb1" /> <!-- background color-->
</shape>
</item>
<item
android:top="-2dp"
android:right="-2dp"
android:left="-2dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="@color/colorAccent" /> <!-- color of stroke -->
</shape>
</item>
</layer-list>