【问题标题】:Android widget ripple background when clicked单击时Android小部件波纹背景
【发布时间】:2018-11-24 20:42:16
【问题描述】:

如何在 Android 上的 WIDGET 上获得一个按钮,以便在单击时显示 Material 波纹?

<LinearLayout
    android:id="@+id/button_power"
    style="@style/MyStyle">
    <ImageView
        android:id="@+id/image_view_power"
        android:layout_width="@dimen/widget_button_image_size"
        android:layout_height="@dimen/widget_button_image_size"
        android:layout_gravity="center_horizontal"
        android:contentDescription="power"
        android:src="@drawable/baseline_power_settings_new_24"
        android:tint="@color/primary_text" />

    <TextView
        android:id="@+id/text_view_power"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="On"
        android:textColor="@color/primary_text"
        android:textSize="@dimen/widget_button_text_size" />
</LinearLayout>

style.xml

<style name="MyStyle" parent="Base.Widget.AppCompat.Button.Borderless">
    <item name="android:layout_width">@dimen/button_height</item>
    <item name="android:layout_height">@dimen/button_height</item>
    <item name="android:minHeight">0dp</item>
    <item name="android:padding">8dp</item>
    <item name="android:minWidth">0dp</item>
    <item name="android:textAllCaps">false</item>
    <item name="android:drawablePadding">0dp</item>
    <item name="android:background">@color/white_pressed</item>
    <item name="android:clickable">true</item>
    <item name="android:focusable">true</item>
    <item name="android:orientation">vertical</item>
</style>

上面显示了我如何使用线性布局来表示小部件的可点击按钮。它还包括样式细节。

我尝试添加该行

android:background="?attr/selectableItemBackground"

到 LinearLayout 但在小部件上出现错误,指出“问题加载小部件”。如果我将属性移动到样式本身,也会出现问题。

看起来我想要实现的目标是可能的,因为 Android 上的 Google Drive 小部件具有这种效果。这是怎么做到的?

谢谢!

【问题讨论】:

标签: java android android-layout kotlin widget


【解决方案1】:

将这些属性添加到您的 LinearLayout

    android:clickable="true"
    android:focusable="true"
    android:foreground="?android:attr/selectableItemBackground"

注意:这在棒棒糖下不起作用。

【讨论】:

    【解决方案2】:

    你可以画一个波纹:

    <ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/colorPrimary">
        <item android:id="@android:id/mask">
            <shape android:shape="rectangle">
                <solid android:color="@android:color/white" />
            </shape>
        </item>
    </ripple>
    

    然后将此可绘制对象设置为布局的背景

    【讨论】:

      【解决方案3】:

      我正在使用

      android:background="?selectableItemBackground"
      

      使用后问题解决了,

      android:background="?android:attr/selectableItemBackground"
      

      【讨论】:

        猜你喜欢
        • 2015-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-14
        • 1970-01-01
        相关资源
        最近更新 更多