如何获取任意TextView以便我可以更改其文本大小

时间:2015-07-06 22:19:02

标签: android

我正在创建一个Android应用程序,我希望它在操作栏中有一个选项,允许用户增加或减少当前活动(或整个应用程序中的文本大小) - 想知道如何同时执行这两个操作)。

我已经定义了一个基本活动,它指定了操作栏。在onOptionsItemSelected方法中,我需要能够获取活动中的所有TextView并更改其文本大小。我该怎么做呢?另外,我将如何在整个应用程序中保持更改?

1 个答案:

答案 0 :(得分:1)

您可以从根目录浏览View层次结构并获取所有TextView。

void setAllTextSize(ViewGroup root, int size){
    for(int i = 0; i < root.getChildCount();i++){
        View child = root.getChildAt(i);
        if(child instanceof TextView)
            ((TextView) child).setTextSize(TypedValue.COMPLEX_UNIT_PT, size);

        if(child instanceof ViewGroup)
            setAllTextSize((ViewGroup) child, size);
    }
}

然后,您必须调用此方法传递布局的根目录。