具有自定义背景和“?attr/selectableItemBackground”的按钮
Button with custom background and "?attr/selectableItemBackground"
如何定义具有自定义背景和属性
的 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"/>
尝试设置
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
示例主布局 activity:
<?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"
好的,你可以选择 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>
你应该为它写一个特殊的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>
如何定义具有自定义背景和属性
的 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"/>
尝试设置
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
示例主布局 activity:
<?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"
好的,你可以选择 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>
你应该为它写一个特殊的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>