Android 使背景从selectableItemBackground继承
现在我的视图(framelayout)已经 我想给它添加一个底部边框(当它被激活时)。一个选项是在内部添加一个层,并使用Android 使背景从selectableItemBackground继承,android,layout,Android,Layout,现在我的视图(framelayout)已经 我想给它添加一个底部边框(当它被激活时)。一个选项是在内部添加一个层,并使用 android:background="@drawable/my_bgr" 但这有点跛脚——毫无理由地增加视图层次结构 另一种选择是将我的drawable作为视图的bgr,但将其更改为处理涟漪效应: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http
android:background="@drawable/my_bgr"
但这有点跛脚——毫无理由地增加视图层次结构
另一种选择是将我的drawable作为视图的bgr,但将其更改为处理涟漪效应:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item android:id="@android:id/mask">
<color android:color="@android:color/white" />
</item>
</ripple>
</item>
<item android:top="-2dp" android:right="-2dp" android:left="-2dp">
<selector>
<item android:state_activated="true">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="2dp"
android:color="#FF0000" />
</shape>
</item>
</selector>
</item>
</layer-list>
这有点酷,但我不支持minSdk=15(我该怎么做?),如果有一天我改变了应用程序的主题,这将保持连锁反应。有没有办法从selectableItemBackground“继承”并添加一个边框?好的,这样就可以在21+android上完成,这是固定的
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:attr/selectableItemBackground" />
<item android:top="-2dp" android:right="-2dp" android:left="-2dp">
<selector>
<item android:state_activated="true">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="2dp"
android:color="#910E12" />
</shape>
</item>
</selector>
</item>
</layer-list>
在此之前,我想我必须在我的视图层次结构中再添加一层(第一层有?android:attr/selectableItemBackground,第二层是我的自定义边框背景)只需将
作为最后一层:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#FF0000" />
<solid android:color="#FFFFFF" />
</shape>
</item>
<item android:drawable="?selectableItemBackground"/>
</layer-list>
请阅读此答案,了解?selectableItemBackground
和?android:attrs/selectableItemBackground
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#FF0000" />
<solid android:color="#FFFFFF" />
</shape>
</item>
<item android:drawable="?selectableItemBackground"/>
</layer-list>