通过GroupView所有孩子的循环? [英] Loop through all childs of GroupView?
本文介绍了通过GroupView所有孩子的循环?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面是我的code:
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/choco.ttf");
ViewGroup rootView = (ViewGroup) findViewById(android.R.id.content).getRootView();
for(int i = 0; i < rootView.getChildCount(); i++)
{
View child = rootView.getChildAt(i);
Log.d("menfis", child.toString());
if(child != null)
if(child.getClass() == TextView.class)
((TextView) child).setTypeface(font);
}
下面是我的XML网页:
Here is my XML for this page:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background_page"
android:gravity="center_horizontal" >
<ImageView
android:id="@+id/imgApplicationIcon"
android:src="@drawable/logo"
android:layout_width="fill_parent" android:layout_height="wrap_content"/>
<TextView
android:layout_marginTop="40dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textColor="@color/red"
android:lines="2"
android:layout_marginRight="30dip"
android:text="test1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="30dip"
android:textColor="@color/red"
android:lines="2"
android:text="test2" />
</LinearLayout>
该problam的是,我只得到了LogCat中控制台上:
The problam is that i only get that on the LogCat console:
09-20 14:34:27.264: DEBUG/menfis(12251): android.widget.LinearLayout@40523820
为什么我没有收到提到了TextViews?
Why i'm not getting references to the TextViews ?
推荐答案
您需要递归遍历视图树。目前,您只列出根视图的孩子。
You need to traverse View tree recursively. Currently you only list children of root view.
换句话说,你需要的是这样的:
In other words, you need something like this:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
...
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/choco.ttf");
ViewGroup rootView = (ViewGroup) findViewById(android.R.id.content).getRootView();
applyFontRecursively(rootView, font);
}
void applyFontRecursively(ViewGroup parent, Typeface font)
{
for(int i = 0; i < parent.getChildCount(); i++)
{
View child = parent.getChildAt(i);
if(child instanceof ViewGroup)
{
applyFontRecursively((ViewGroup)child, font);
}
else if(child != null)
{
Log.d("menfis", child.toString());
if(child.getClass() == TextView.class)
{
((TextView) child).setTypeface(font);
}
}
}
}
这篇关于通过GroupView所有孩子的循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文