我嘗試在加載時獲取當前活動中的所有WebView元素,並獲取輸出。
它的工作完美。如何獲得Chid Layout的孩子?
代碼:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.dmp_webview.MainActivity"
android:orientation="vertical">
<WebView
android:id="@+id/simpleWebView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="20dp"
android:scrollbars="none" />
<WebView
android:id="@+id/simpleWebView2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="20dp"
android:scrollbars="none" />
</LinearLayout>
private void forWebviews() {
final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
int elementSize = getWenViews(viewGroup).size();
for(int j =0; j< elementSize;j++)
{
WebView getAllWebView = formIsValid(viewGroup).get(j);
String SplitTypeWebView = String.valueOf(getAllWebView);
String getWebValues = getAllWebView.getUrl().toString();
SplitWebViewID(SplitTypeWebView);
}
}
private ArrayList<WebView> getWenViews(ViewGroup viewGroup) {
ArrayList<WebView> webview = new ArrayList<WebView>();
for (int i = 0; i < viewGroup.getChildCount(); i++) {
View v = viewGroup.getChildAt(i);
if (v instanceof WebView) {
webview.add((WebView) v);
}
}
return webview;
}
但是當我多一個的LinearLayout(不僅LinearLayout中其他的佈局也)對的WebView父意味着這個樣子,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.dmp_webview.MainActivity"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:orientation="vertical"
android:padding="16dp"
android:id="@+id/RootLayout_1">
<WebView
android:id="@+id/simpleWebView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="20dp"
android:scrollbars="none" />
<WebView
android:id="@+id/simpleWebView2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="20dp"
android:scrollbars="none" />
</LinearLayout>
</LinearLayout>
它不工作正常。爲什麼?它不會返回子視圖計數。我需要澄清一件事情。
- 是否有可能得到所有的孩子佈局的孩子。 (例如) 根佈局 - >的LinearLayout(一些其它佈局) - >的LinearLayout(一些其它佈局)-views
PLZ引導me.Actually我得到根佈局和迭代。 如何在運行時獲取所有子視圖?這與多少個根佈局或子佈局或視圖無關。我需要全部。
的'#的ViewGroup * getChild()'方法只處理直接子'View's,所以你沒有在嵌套的ViewGroup中獲得這些'WebView'。在'getWenViews()'中,如果孩子是另一個'ViewGroup','if'需要'else if' - else if(v instanceof ViewGroup){webview.addAll(getWenViews((ViewGroup)v)) ; }' –
您是否試圖在佈局中獲取所有'WebView'或者在特定的'ViewGroup'中獲取所有'WebView's? – Titus
@MikeM。是的,邁克你是對的,它會得到直接的子視圖,根據邏輯我需要添加其他如果檢查其他viewgroup.i會嘗試並更新給你 – Moorthy