Adh*_*ham 127 android android-linearlayout
我有一个LinearLayout,其中包含几个孩子TextViews.如何使用循环获取该LinerLayout的子视图?
Yas*_*mar 266
使用getChildCount()和getChildAt(int index).
例:
LinearLayout ll = …
final int childCount = ll.getChildCount();
for (int i = 0; i < childCount; i++) {
View v = ll.getChildAt(i);
// Do something with v.
// …
}
Run Code Online (Sandbox Code Playgroud)
Fav*_* Kv 37
( (ViewGroup) findViewById(android.R.id.content));// you can use this in an Activity to get your layout root view, then pass it to findAllEdittexts() method below.
Run Code Online (Sandbox Code Playgroud)
在这里,我只迭代EdiTexts,如果你想要所有的视图,你可以用View替换EditText.
SparseArray<Edittext> array = new SparseArray<Edittext>();
private void findAllEdittexts(ViewGroup viewGroup) {
int count = viewGroup.getChildCount();
for (int i = 0; i < count; i++) {
View view = viewGroup.getChildAt(i);
if (view instanceof ViewGroup)
findAllEdittexts((ViewGroup) view);
else if (view instanceof Edittext) {
Edittext edittext = (Edittext) view;
array.put(edittext.getId(), edittext);
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
用这个
final int childCount = mainL.getChildCount();
for (int i = 0; i < childCount; i++) {
View element = mainL.getChildAt(i);
// EditText
if (element instanceof EditText) {
EditText editText = (EditText)element;
System.out.println("ELEMENTS EditText getId=>"+editText.getId()+ " getTag=>"+element.getTag()+
" getText=>"+editText.getText());
}
// CheckBox
if (element instanceof CheckBox) {
CheckBox checkBox = (CheckBox)element;
System.out.println("ELEMENTS CheckBox getId=>"+checkBox.getId()+ " getTag=>"+checkBox.getTag()+
" getText=>"+checkBox.getText()+" isChecked=>"+checkBox.isChecked());
}
// DatePicker
if (element instanceof DatePicker) {
DatePicker datePicker = (DatePicker)element;
System.out.println("ELEMENTS DatePicker getId=>"+datePicker.getId()+ " getTag=>"+datePicker.getTag()+
" getDayOfMonth=>"+datePicker.getDayOfMonth());
}
// Spinner
if (element instanceof Spinner) {
Spinner spinner = (Spinner)element;
System.out.println("ELEMENTS Spinner getId=>"+spinner.getId()+ " getTag=>"+spinner.getTag()+
" getSelectedItemId=>"+spinner.getSelectedItemId()+
" getSelectedItemPosition=>"+spinner.getSelectedItemPosition()+
" getTag(key)=>"+spinner.getTag(spinner.getSelectedItemPosition()));
}
}
Run Code Online (Sandbox Code Playgroud)
Kotlin 使用 for-in 循环更容易:
for (childView in ll.children) {
//childView is a child of ll
}
Run Code Online (Sandbox Code Playgroud)
这里ll是在布局 XMLid中LinearLayout定义的。
| 归档时间: |
|
| 查看次数: |
94309 次 |
| 最近记录: |