Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使背景从selectableItemBackground继承_Android_Layout - Fatal编程技术网

Android 使背景从selectableItemBackground继承

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

现在我的视图(framelayout)已经

我想给它添加一个底部边框(当它被激活时)。一个选项是在内部添加一个层,并使用

         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>