Android 不同大小的按钮共享相同的可绘制背景

Android 不同大小的按钮共享相同的可绘制背景,android,android-ui,Android,Android Ui,我的应用程序有一个椭圆形的大按钮作为背景,它是运行时创建的。让我们把这个按钮命名为A 当我启用某个功能时,A的可见性设置为“消失”,并显示四个较小的按钮,背景与A相同 当我隐藏按钮并再次显示时,它具有适当的大小,但背景可绘制的大小仍然是以前绘制的较小按钮的大小。我如何调整它的大小,使其填充按钮的大小 更新:我的代码 //BigButton.java //... GradientDrawable idle = new GradientDrawable(); idle.setColor(Color.

我的应用程序有一个椭圆形的大按钮作为背景,它是运行时创建的。让我们把这个按钮命名为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:以下内容创建了一个新的绘图表,以便在父按钮和子按钮之间不共享资源

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

两个按钮使用相同的引用。使用两个不同的引用,但设置相同。这样,小按钮的可绘制性更改在大按钮上不可见,反之亦然。

发布您正在使用的xml以及用于设置背景的任何代码。正如所说,可绘制性是运行时创建的,因此我没有形状的xml。看起来,当创建一个新视图时,绘图表会自动调整大小,因此,如果我再次显示大按钮,它会显示小尺寸的绘图表,我需要一种方法来刷新它的大小。有没有一种方法可以“刷新”绘图表,这样我就不必使用两个不同的按钮?没有,因为它们正在为绘图表查看相同的对象。如果不希望其中一个对象的更改被其他对象拾取,则它们需要是单独的对象。