5

如何Button用自定义背景和属性定义一个
"?attr/selectableItemBackground"

使用此代码,该"?attr/selectableItemBackground"属性将被忽略,它不显示触摸反馈。

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:foreground="?attr/selectableItemBackground"/>

使用这个其他代码,可选择的工作,但我失去了背景颜色:

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/selectableItemBackground"/>
4

3 回答 3

4

好的,您可以选择parent

创建父母并赋予background白色并selectableItemBackground用作孩子的背景。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical">

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/selectableItemBackground"/>

</LinearLayout>
于 2017-03-13T11:21:41.107 回答
3

尝试设置

android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"

主要布局活动示例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.petercarlim.myapplication.MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:background="@android:color/darker_gray"
        android:foreground="?android:attr/selectableItemBackground"/>

</LinearLayout>

或在您的布局的父级(调用此布局的其他布局)中设置:

    android:clickable="true"
    android:focusable="true"
    android:focusableInTouchMode="true" 
于 2017-03-13T11:20:11.303 回答
2

你应该为它写一个特殊的drawable

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <selector>
            <item android:drawable="@drawable/your_drawable_rounded_enabled" android:state_enabled="true"/>
            <item android:drawable="@drawable/your_drawable_rounded_disabled" android:state_enabled="false"/>
        </selector>
    </item>
    <item android:drawable="?attr/selectableItemBackground"/>
</layer-list>
于 2019-06-12T12:56:31.583 回答