我使用两个应用程序。一个通过RemoteView
接口公开AIDL
。第二个使用ListView
和自定义适配器来显示RemoteView
。
使用一个布局和一个TextView
的非常简单的视图,TextView
中的Listview
为白色。
所有应用程序都使用相同的灯光样式。
是否可以将样式应用于RemoteView
?
或者,如何管理RemoteView实例的样式?
由于
答案 0 :(得分:0)
RemoteView
不支持更改主题。然后,你唯一能做的就是保留两个布局文件具有相同的布局和不同的主题(如不同的字体颜色),在更新appWidget之前,你可以选择任何一个布局作为RemoteView
答案 1 :(得分:0)
可以使用RemoteView应用样式。
final View view=remoteViews.apply(new ContextWrapper(mContext)
{
public Context createPackageContext(String packageName, int flags) throws NameNotFoundException
{
return new ContextWrapper(getBaseContext().createPackageContext(packageName, flags))
{
// Delegate the theme to the context
@Override
public Theme getTheme()
{
return mContext.getTheme();
}
};
}
}, parent);
答案 2 :(得分:0)
我通过为RemoteView创建一个布局文件(在我的情况下,我创建了自定义通知的模板)和两个styles.xml
文件,一个在值中,另一个在values-v21中解决了这个问题。这样,我可以为Lollipop和up应用Material样式,以及以前Android版本的常规样式。
如果您尝试匹配某种系统风格,可以查看the Android core system styles,了解它们如何组合在一起。我特别关注attrs.xml因为您可以使用其中一些具有自动主题语法的内容,例如
<style name="mediaNotificationTitle">
<item name="android:textColor">?android:attr/textColorPrimary</item>
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
</style>
然后在布局中,只需用style=@style/mediaNotificationTitle
来引用它。