动态更改Android中按钮的宽度

时间:2011-04-17 04:11:00

标签: android dynamic button

我的问题非常简单,我正在尝试动态更改此按钮的宽度:

<Button> 
    android:layout_height="35dip" 
    android:background="@drawable/buttonlesson" 
    android:text="Level 3 [TAP HERE]" 
    android:onClick="MenuLI1L3" 
    android:layout_width="300dp" 
    android:id="@+id/II3"
</Button>

以下是我使用的代码:

 Button myButton = (Button) findViewById(R.id.II3);
 myButton.setWidth(10);
 myButton.setText("kl");

文字确实改变但不是宽度。声音就像有一个bug。 右边有另一个按钮,当按钮缩小到10像素时,可以填补间隙,所以我也无法更改上面的LinearLayout。

任何解释&amp;解决方案它不应该工作吗?感谢

2 个答案:

答案 0 :(得分:2)

我认为wrap_content对你的具体情况不起作用,对吧? 如果您需要绝对宽度,则需要通过新的LayoutParameters分配,即

myButton.setLayoutParams(new LinearLayout.LayoutParams(
    30 * someDensityFactor, LinearLayout.LayoutParams.WRAP_CONTENT
))

其中someDensityFactor是你的屏幕密度(浮点数)。您也可能需要使布局无效,以便重新绘制按钮。

答案 1 :(得分:0)

作为建议尝试在父视图上调用invalidate()(这将导致对所有子项的绘图调用 - 包括您的按钮)。这可能不起作用,因为您还需要按钮重新运行其onMeasure()逻辑(在绘图之前运行)。

使用无效或任何其他方法进行播放,这些方法会导致父级调用子级的onMeasure。