gpt4 book ai didi

java - 检测所有小部件的 Android 实例?

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:04 25 4
gpt4 key购买 nike

我试图通过遍历 LinearLayout 的 View 并使用 instanceof 为所有 TextView 设置字体。

该表单目前由 4 个 TextView 和一个 Button 组成。

下面的代码正在检测所有 View,甚至 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));
}
}

如果我记录每个 View 的类名,它会返回 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));
}
}

是不是因为Button和TextView都是View类型?如果是这样,这样做的正确方法是什么?

感谢任何帮助,谢谢。瑞奇。

最佳答案

其实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 的任何其他子类(如果您使用它们)。

关于java - 检测所有小部件的 Android 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6911424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com