具有自定义背景和“?attr / selectableItemBackground”的按钮

时间:2017-03-13 11:10:02

标签: android material-design android-view android-button android-attributes

如何定义具有自定义背景和属性的class StudentView(sqa.Model): __tablename__ = 'test_view' id = sqa.Column(sqa.Integer, primary_key=True) name = sqa.Column(sqa.String) age = sqa.Column(sqa.Integer) score = sqa.Column(sqa.Integer) 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"/>

3 个答案:

答案 0 :(得分: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" 

答案 1 :(得分:3)

好吧,您可以选择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>

答案 2 :(得分:0)

您应该为此编写一个特殊的绘图对象

<?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>