Android экземпляр обнаруживает все виджеты? - PullRequest
3 голосов
/ 02 августа 2011

Я пытаюсь установить шрифт для всех TextView, перебирая представления LinearLayout и используя instanceof.

Форма в настоящее время состоит из 4 TextView 's и one Button.

Приведенный ниже код обнаруживает все View s, даже Button как TextView?

    /* Set fonts */
    LinearLayout ll = (LinearLayout) findViewById(R.id.ll_screenincourse_wrapper);
    for (int i = 0; i < ll.getChildCount(); i++) {          
        View v = ll.getChildAt(i);          
        if (v instanceof TextView) {
            ((TextView) v).setTypeface(Fonts.get3dDumbFont(this));
        }
    }

Если я регистрирую класс каждого представленияname возвращает TextView и Button, так что я знаю, что подбираются правильные элементы управления.

Проблема в том, что Button и TextView устанавливаются шрифты, а мне нужны только TextView.

Я нашел обходной путь, который заключается в следующем, но я заинтригован тем, почему приведенный выше код не работает должным образом.

    /* Set fonts */
    LinearLayout ll = (LinearLayout) findViewById(R.id.ll_screenincourse_wrapper);
    for (int i = 0; i < ll.getChildCount(); i++) {          
        View v = ll.getChildAt(i);          
        if (v.getClass().getName().contains("TextView")) {
            ((TextView) v).setTypeface(Fonts.get3dDumbFont(this));
        }
    }

Это потому, что кнопки и TextView имеютТип View?Если это так, что будет правильным способом сделать это?

Любая помощь приветствуется, спасибо.Рикки.

Ответы [ 2 ]

8 голосов
/ 02 августа 2011

На самом деле, Button является подклассом TextView! Вот почему вы видите его как TextView (это также TextView).

http://developer.android.com/reference/android/widget/Button.html

public class Button extends TextView

Вы можете сделать секунду, если instanceof исключить кнопки или использовать

if (v.getClass() == TextView.class)

Но это не будет соответствовать другим подклассам TextView (если вы их используете).

2 голосов
/ 02 августа 2011

Это просто

Класс кнопок расширяет Класс TextView

Проверьте документацию

...