以编程方式添加组件的样式与XML布局中的样式不同

时间:2019-06-05 20:05:27

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

在布局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的默认设置。 (白色背景上的黑色文字)

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

正如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>