我正在使用一个形状,以使我的按钮看起来圆并具有背景(来自布局文件夹):
主要布局:
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/registerButton"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@layout/circle_button"/>
circle_button.xml:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:layout_width="wrap_content"
android:layout_height ="wrap_content"
android:id = "@+id/circle_background">
<solid android:background = "@drawable/start_record_icon"></solid>
</shape>
问题是,我想根据活动中的一些变量将形状的背景更改为给定图标(也是可绘制的)。如果我在XML中定义背景,我该如何动态更改它? (我可以创建3种不同背景的不同形状的布局,但这看起来很愚蠢)
提前致谢!
编辑:所以我现在得到的是这样的(如果我将形状中的实体颜色更改为白色,因为否则图标根本没有显示,我什么也看不见。右下角的按钮):
所以我有一些问题,实际上:一个是我无法设置按钮的大小(如果我尝试在<Button>
中设置,它会变成方形;如果我尝试在形状中或在它没有任何作用),其次是我不能应用图标或更改它们。
答案 0 :(得分:0)
您可以使用ImageView执行此操作,方法是使用您的业务逻辑调用setBackgroundResource(int resource)。
ImageView imageView = (ImageView) findViewById(R.id.registerButton);
if (isCircle()) {
imageView.setBackgroundResource(R.drawable.circle_button);
}
else {
// TODO use different XML drawable
}
在布局XML中,您应指定相等的宽度和高度,并使用src attribute设置图标。
<ImageView
android:layout_width="72dp"
android:layout_height="72dp"
android:src="@drawable/my_icon" />