如何在Android上的WIDGET上获得一个按钮,以便在点击时显示材质波纹?
<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但是在窗口小部件上出现错误,表示&#34;问题加载小部件&#34;。如果我将属性移动到样式本身,也会出现问题。
看起来我想要实现的目标是可行的,因为Android上的Google Drive小部件具有此效果。这是怎么做到的?
谢谢!
答案 0 :(得分:0)
将这些属性添加到LinearLayout
cylinder()
注意:这在棒棒糖下面不起作用。
答案 1 :(得分:0)
您可以绘制涟漪图:
<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>
然后将此可绘制对象设置为布局的背景