2 myc 100 myc_100 于 2013.01.10 13:06 提问

使用java代码如果获取所有的Button,例如childAt()方法?

我根据Button当前的高度,想为所有的Button重新设置背景高度,用下面的方法获取所有的Button对象:

for(int i=0;i<layout.getChildCount();i++)
{
Button b = layout.childAt(i);
b.setHeight(x);
}

我是想获取所有嵌套布局中的所有Button,但是在一些布局中既有Button又有 textviews。如何能只获取Button,而没有其它的?
谢谢!

4个回答

curie_87
curie_87   2013.01.14 10:31
已采纳

添加一个新类和 extend 按钮,然后重新你需要的方法。
在我的例子中我重新了 setBackgroundDrawable()

@Override
public void setBackgroundDrawable(Drawable background) {


Log.d("button","setting new background  ");
Drawable[] layers = new Drawable[5];
Resources resources = getResources();




layers[0] = resources.getDrawable(R.drawable.outer_rectangle);
layers[1] = resources.getDrawable(R.drawable.inner_rectangle);
layers[2] = resources.getDrawable(R.drawable.upper_ovel);
layers[3] = resources.getDrawable(R.drawable.gradient_fill);
layers[4] = resources.getDrawable(R.drawable.lower_ovel);

LayerDrawable layerDrawable = new LayerDrawable(layers);

layerDrawable.setLayerInset(0, 0, 0, 0, 0);
layerDrawable.setLayerInset(1, 3, 3, 3, 0);
layerDrawable.setLayerInset(2, 3, 15, 3, 25);
layerDrawable.setLayerInset(3, 3, 23, 3, 0);
layerDrawable.setLayerInset(4, 4, 60, 4, -5);



super.setBackgroundDrawable(layerDrawable);
} 
HuiGeZhang
HuiGeZhang   2013.01.10 17:50

只想获取Button是吧?那好办,见如下方法:

`
for(int i=0;i<layout.getChildCount();i++)
{
View v = layout.childAt(i);
if(v instanceOf Button)
{
    Button b = (Button)v;
    b.setHeight(x);
}
}
`
ccchp
ccchp 此楼正解啊
接近 5 年之前 回复
suannai0314
suannai0314 帮你编辑了下代码~
接近 5 年之前 回复
franzhong
franzhong   2013.01.10 13:15

Button你肯定会初始化,这样是不是很简便呢

......
Button btn1 = (Button) findViewById(R.id.myBtn1);
Button btn2 = (Button) findViewById(R.id.myBtn2);
List<Button> btns = new ArrayList<Button>();
btns.add(btn1);
btns.add(btn2);
......

//操作第二个Button

int i=2;
btns.get(i).setWidth(100);
btns.get(i).setHeight(100);
cytown
cytown   2013.01.10 17:46
for(int i=0;i<layout.getChildCount();i++)
{
View b = layout.childAt(i);
if (b instance of Button) ((Button)b).setHeight(x);
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!