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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
遍历页面内所有按钮
asp.net 后台方法 //遍历页面所有button控件         for (int i = 0; i         {             if (this.form1.Controls[i].GetType().ToString() == "System.Web.UI.WebControls.Button")             {              
关于“button”标签元素的获取问题
为什么直接用标签名无法实现,而换做Id就可以实现?? btn 按钮       var button = document.getElementsByTagName('button');     button.onclick = function (){     alert(&quot;今天天气不错&quot;);     }
ios 获取页面的所有uiimageview 和UIButton
- (void) layoutSubviews { //屏蔽系统的ImageView 和 UIButton for (UIView *v in [self subviews]) { if ([v class] == [UIImageView class]){ [v setHidden:YES]; }
包装类对象之间值的比较,全部使用 equals 方法比较
所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。 说明: 对于 Integer var = ? 在-128 至 127 范围内的赋值, Integer 对象是在IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑, 推荐使用 e
回文三位数
回文三位数 时间限制: 0 ms         内存限制: 65536 KB 提交数: 406     通过数: 279  【题目描述】 如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,求出所有的既是回文数又是素数的三位数。 【输入】 (无) 【输出】 所有的既是回文数又是素数的三位数。一个数一行。 【输入样例】 (无)
习题2-1 水仙花数(daffodil)
#include #include using namespace std; int main() { int n,a,b,c; for(n=100;n<=999;n++) { a=n/100; b=n/10%10; c=n%10; if(a*a*a+b*b*b+c*c*c==n) {
java 反射机制 之 getMethods获取所有公有方法 和 getDeclaredMethods 获取本类所有方法
java 反射机制 之 getMethods获取所有公有方法 和 getDeclaredMethods 获取本类所有方法
iOS点击事件的截取(OC)
1.创建圆形ImageView按钮  只有点击圆形内响应方法才会执行,具体实现方法如下: //首先创建一个类继承于UIImageView - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { //计算直径 _diameter =
T1155 回文三位数(#Ⅰ- 6 - 1)
【题目描述】如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,求出所有的既是回文数又是素数的三位数。【输入】(无)【输出】所有的既是回文数又是素数的三位数。一个数一行。【输入样例】(无)【输出样例】(无)【源程序】#include&amp;lt;iostream&amp;gt; #include&amp;lt;cmath&amp;gt; using namespace std; bool jud...
winform中如何获得窗体中所有的控件
<br />winform中如何获得窗体中所有的控件(button)<br />http://topic.csdn.net/u/20080331/09/485e5651-b2f3-41d5-833f-8b65deef8b52.html