我正在嘗試計算顯示給用戶的任何佈局中的所有視圖。爲了實現它,貼在下面的代碼中使用,但你在佈局看,它包含如何獲取包含子視圖在內的所有視圖總數
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()方法不能使用, }' 我改變了主要答案。 –