【问题标题】:Adding components programmatically has different style than those in XML layout以编程方式添加组件的样式与 XML 布局中的样式不同
【发布时间】:2019-10-21 08:44:14
【问题描述】:

布局 XML 中定义的组件(文本和编辑框)看起来与我以编程方式添加的组件非常不同。

我尝试以编程方式应用与我的 XML 相同的 textAppearance 样式。我也尝试在添加组件后调用setTheme()。没有不同。

    TextView tv10 = new TextView(getApplicationContext());
    tv10.setText("Back width");
    EditText tv11 = new EditText(getApplicationContext());
    tv11.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_CLASS_NUMBER);

TextView 带有小字体和灰色文本,EditText 带有黑色背景和灰色文本。 由于用户选择的选项,必须以编程方式添加组件。这些用户选择在 XML 中定义,并遵循预期的配色方案,这是 Android Studio 的默认设置。 (白底黑字)

【问题讨论】:

    标签: java android android-layout android-widget android-styles


    【解决方案1】:

    您不应该将应用程序上下文用于视图。只有活动上下文。在代码中创建视图时,您也可以将样式作为参数传递。

    【讨论】:

    • 使用 parentView.getContext() 而不是 getApplicationContext() 使其按预期工作。
    • @CupOfQuestions 很高兴听到。你能把我的答案标记为正确的吗?谢谢
    【解决方案2】:

    正如 Yamko 所说,样式可以在构造函数中传递

    var textView = TextView(context, null, R.style.LoginBodyTextViewStyle)
    

    样式可以是这样的

    <style name="LoginBodyTextViewStyle" parent="android:Widget.TextView">
            <item name="android:textStyle">normal</item>
            <item name="android:fontFamily">sans-serif</item>
            <item name="android:textSize">@dimen/text_size_default</item>
            <item name="android:textColor">@color/grey</item>
    </style>
    

    【讨论】:

      猜你喜欢
      • 2011-02-25
      • 2018-03-28
      • 1970-01-01
      • 2021-03-06
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      相关资源
      最近更新 更多