不同大小的按钮共享相同的drawable作为背景

时间:2013-07-04 20:33:37

标签: android android-ui

我的应用程序有一个椭圆形的大按钮作为背景,它是运行时创建的。我们将此按钮命名为A.

当我启用某个功能时,A的可见性设置为GONE,并显示四个较小的按钮,具有相同的背景A.

当我隐藏按钮并再次显示A时,它具有适当的大小,但背景可绘制的仍然是之前绘制的较小按钮的大小。如何调整它以使其填充A按钮的大小?

更新:我的代码

//BigButton.java
//...
GradientDrawable idle = new GradientDrawable();
idle.setColor(Color.rgb(red, green, blue));
idle.setShape(GradientDrawable.OVAL);
idle.setStroke(2, Color.rgb(red2, green2, blue2));
btn.setWidth(50*3f);
btn.setHeight(65*3f);
btn.setBackgroundDrawable(idle);
//...

//ChildButton.java
//...
GradientDrawable idle = BigButton.this.getIdleDrawable();
btn2.setWidth(50);
btn2.setHeight(65);
btn2.setBackgroundDrawable(idle);
//...

Update2:以下内容创建了一个新的drawable,以便父和子按钮之间没有资源共享。

GradientDrawable idle = (GradientDrawable) ButtonSetupPanel.this.caller.getIdle().getConstantState().newDrawable();

1 个答案:

答案 0 :(得分:1)

您对两个按钮使用相同的参考。使用两个不同的引用,但使用相同的设置。这种方式改变为小按钮的drawable将不会在大屏幕上可见,反之亦然。