ArrayList<View> allButtons;
String button;
button = ((RelativeLayout) findViewById(R.id.activity_main)).getTouchables().toString();
System.out.println(button);
输出:
System.out:[android.support.v7.widget.AppCompatImageButton {7107785 VFED..C .. ........ 32,74-176,210#7f0b0056 app:id / imageButton2},android.support .v7.widget.AppCompatButton {c4b99da VFED..C .. ... P .... 66,256-242,352#7f0b0057 app:id / button}]
我怎样才能获得button
答案 0 :(得分:4)
您应该编写代码
ArrayList<View> allTouchables = ((RelativeLayout) findViewById(R.id.activity_main)).getTouchables();
for (View view : allTouchables) {
System.out.println(view.getId());
}
如上面的代码返回存在于给定容器中的所有可触摸视图,您还应该检查视图的类型,如
ArrayList<View> allTouchables = ((RelativeLayout) findViewById(R.id.activity_main)).getTouchables();
for (View touchable : allTouchables) {
// To check if touchable view is button or not
if( touchable instanceof Button) {
System.out.println(touchable.getId());
}
}
要获取id的字符串表示,可以编写
String idString = view.getResources().getResourceEntryName(view.getId());
答案 1 :(得分:2)
aah你可以在添加到arraylist之前检查视图的类型。
ArrayList<Button>buttons = new ArrayList<>();
parentLayout = (RelativeLayout)findViewById(parentID);
for(int i=0; i<parentLayout.getChildCount(); i++){
View view = parentLayout.getChildAt(i);
if(view instanceof Button){
buttons.add((Button)view);
}
}
答案 2 :(得分:0)
因此,您需要检查布局中单击了哪个按钮并进行相应处理。
这可以通过两种方式实现。
<强> 1。使用getId()
<强> XML 强>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next Layout"
android:id="@+id/Next"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<强> YourActivity 强>
final Button nxtbtn = (Button) findViewById(R.id.Next);
nxtbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int ID = nxtbtn.getId();
if(ID == R.id.Next) // your R file will have all your id's in the literal form.
{
Log.e(TAG,""+ID);
}
}
});
<强> 2。使用TAG
<强> XML 强>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next Layout"
android:tag="buttonA"
android:id="@+id/Next"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
只需在xml
中添加TAG属性即可您的活动
final Button nxtbtn = (Button) findViewById(R.id.Next);
nxtbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String Tag = nxtbtn.getTag().toString();
Log.e("TAG", "" + Tag);
if (Tag.equal("ButtonA")){ /* Your code here */}
}
});
希望这可能有所帮助。