当按钮已经设置了背景图片
时,我一直在尝试实现正常android按钮效果但是问题是,一旦设置了背景,按钮的默认属性就消失了(阴影,可单击的动画等。)
有人可以给我一个可行的解决方案吗?
这是我按钮的代码
<Button style="@style/Widget.AppCompat.Button.Colored"
android:id="@+id/student"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/student"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="8dp"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="8dp"
app:layout_constraintVertical_bias="0.891" />
自从我设置了背景图片以来,它看起来很棒,但看起来仍然像您在Java中将图片设置为jLabel
”
如何在保持背景图像完整的同时获取默认按钮外观?
答案 0 :(得分:0)
按钮通过将背景设置为具有高程,阴影,波纹等的背景来工作。要获得相同的行为,您需要将背景设置为执行波纹效果并放置阴影的StateListDrawable和高程效果,其中所有图片均以背景为背景。您不能仅将背景设置为图像,否则将失去所有这些功能。实现此目的最简单的方法是查看AOSP源代码,找到其使用的可绘制对象,将其复制到您的项目中,然后进行适当的编辑。
基本上,在Android中,按钮只是具有特殊背景预设的TextView。
答案 1 :(得分:0)
为什么不使用ImageButton
小部件?它的行为与Button
和ImageView
组合在一起
选中此tutorial,以了解如何使用它。
如官方文档中所述
显示带有图像(而不是文本)的按钮,用户可以按下或单击该按钮。默认情况下,ImageButton看起来像常规按钮,其标准按钮背景在不同的按钮状态期间会更改颜色。按钮表面上的图像由XML元素中的android:src属性或由ImageView.setImageResource(int)方法定义
答案 2 :(得分:0)
情况1,效果显示在图像的后面:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?selectableItemBackground"
android:src="@mipmap/desire_image" />
或椭圆形效果,但它仍显示在图像后面
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?selectableItemBackgroundBorderless"
android:src="@mipmap/desire_image" />
案例2,使用卡片视图包装图像和placholder视图,并单击placholder视图。效果将显示在图像的前面:
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
app:cardCornerRadius="4dp"
android:layout_height="wrap_content">
<!-- Expect image view, image button, button-->
<ImageView
android:layout_width="desire_size"
android:layout_height="desire_size"
android:src="@mipmap/desire_image" />
<View
android:id="@+id/clickable_view"
android:layout_width="desire_size"
android:layout_height="desire_size"
android:background="?selectableItemBackground"/>
</androidx.cardview.widget.CardView>
注意:注册onClick事件以显示效果