有一种名为Widget.Material.Button
的风格,它具有我真正喜欢的动画效果(它会使你的点击“闪现”),我希望能够在我的代码中重复使用它。
我试图让它具有透明的背景色,因为默认情况下它是灰色的,当应用于我的ViewGroup
个对象时效果不佳。
是否有一种简单的方法来保留动画,但摆脱背景颜色?
我已经尝试设置属性android:background="@android:color/transparent"
,但这会导致动画完全停止工作。
<?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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@android:style/Widget.Material.Button"
tools:targetApi="lollipop">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, world!"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is just another line of text."/>
</LinearLayout>
答案 0 :(得分:3)
正如this blog在“可点击的观看次数”下所述,您可以使用android:background="?attr/selectableItemBackground
:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="?attr/selectableItemBackground">
...
</LinearLayout>
答案 1 :(得分:2)
很抱歉最初给错了位。看起来更深一点的问题是背景颜色已被定义为您用于颜色高光的MaterialTheme扩展的任何内容的一部分。具有讽刺意味的是,它们来自其他地方的透明来源但不在这里吗?
您想要的是制作两个新的xml文件来定义您的属性
在vales-v21 / styles.xml中,您可以按照自己喜欢的方式重新定义这些内容,或者消除您不想覆盖的值
如果您只想要纹波,请使用在底部定义的可绘制代码
print
然后你的按钮背景样式 /drawable-v21/material_background_ripple.xml
<style name="MyMaterialButton" parent=android:Widget.Material.Button>
<item name="background">@drawable/material_background_ripple</item>
<item name="textAppearance">?attr/textAppearanceButton</item>
<item name="minHeight">48dip</item>
<item name="minWidth">88dip</item>
<item name="stateListAnimator">@anim/button_state_list_anim_material</item>
<item name="focusable">true</item>
<item name="clickable">true</item>
<item name="gravity">center_vertical|center_horizontal</item>
</style>
<强>节录:强> 你有没有尝试过 。customView.getWindow()setBackgroundDrawableResource(R.color.transparent);
?