我正在尝试计算显示给用户的任何布局中的所有视图。为了实现它,贴在下面的代码中使用,但你在布局看,它包含如何获取包含子视图在内的所有视图总数
Button
LinearLayout
Button
Button
TextView
LinearLayout
代码被执行时,它说,布局只有4个组件“按钮,LinearLayout中,TextView的, LinearLayout“,而我期望代码返回6个小部件。 你能告诉我如何让包含子小部件/视图的布局中包含的小部件总数?
代码:
public class ActMain extends AppCompatActivity {
private static final String TAG = ActMain.class.getSimpleName();
private LinearLayout mMainContainer = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_main);
this.mMainContainer = (LinearLayout) findViewById(R.id.actMain_mainContainer);
int totalWidgets = this.mMainContainer.getChildCount();
Log.d(TAG, "totalWidgets:" + totalWidgets);
for (int i = 0; i < this.mMainContainer.getChildCount(); i++) {
View view = mMainContainer.getChildAt(i);
}
}
}
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/actMain_mainContainer"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.alten.test_traversethroughaview_1.ActMain">
<Button
android:id="@+id/actMain_btn_change"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/decision_change" />
<LinearLayout
android:id="@+id/actMain_linlay_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/actMain_btn_yes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/decision_yes" />
<Button
android:id="@+id/actMain_btn_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/decision_no" />
</LinearLayout>
<TextView
android:id="@+id/actMain_tv_display"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:id="@+id/actMain_linlay_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
谢谢你的塔答案。但有没有另一种方式来当前显示在屏幕上的主viewGroup /主容器? – LetsamrIt
@LetsamrIt 使用此行访问当前屏幕中的主要布局: getWindow()。getDecorView()。getRootView(); ()ViewGroup)getChildrenViews((ViewGroup)getWindow()。getDecorView()。getRootView());如果使用getWindow()方法,则返回true;如果getWindow()方法不能使用, }' 我改变了主要答案。 –