注意:我不打算设置样式,我想动态更改styles.xml中声明的样式。
例如,我的应用程序有一个小部件,其布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:id="@+id/widgettext1"
style="@style/My.WidgetTextView"/>
<TextView
android:id="@+id/widgettext2"
style="@style/My.WidgetTextView"/>
<TextView
android:id="@+id/widgettext3"
style="@style/My.WidgetTextView"/>
<TextView
android:id="@+id/widgettext4"
style="@style/My.WidgetTextView"/>
</LinearLayout>
在styles.xml中我有这个:
<style name="My.WidgetTextView" parent="android:Widget.TextView">
<item name="android:background">#99221111</item>
<item name="android:gravity">center_horizontal|center_vertical</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">25sp</item>
<item name="android:enabled">true</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">#FFFFFF</item>
<item name="android:textSize">@dimen/widget_font</item>
</style>
现在,我想允许用户更改一些视觉设置,例如文本大小或背景颜色。
最简单的方法似乎是以某种方式编辑样式,所以我不必将它应用于每个textview或其他东西。这可能吗?
有人可以建议创建一堆样式并让用户在它们之间进行选择,但这不是我想要的。
答案 0 :(得分:0)
您可以设置样式,例如My.WidgetTextView
以编程方式使用:
ContextThemeWrapper context = new ContextThemeWrapper(Context, R.style.My.WidgetTextView);
TextView myText = new TextView(context);
但是,您无法以编程方式更改My.WidgetTextView
的属性。