更改形状的背景作为视图的背景

时间:2015-12-22 19:39:22

标签: android button background

我正在使用一个形状,以使我的按钮看起来圆并具有背景(来自布局文件夹):

主要布局:

<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种不同背景的不同形状的布局,但这看起来很愚蠢)

提前致谢!

编辑:所以我现在得到的是这样的(如果我将形状中的实体颜色更改为白色,因为否则图标根本没有显示,我什么也看不见。右下角的按钮):

enter image description here

所以我有一些问题,实际上:一个是我无法设置按钮的大小(如果我尝试在<Button>中设置,它会变成方形;如果我尝试在形状中或在它没有任何作用),其次是我不能应用图标或更改它们。

1 个答案:

答案 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" />