将样式应用于RemoteView?

时间:2013-08-30 12:26:30

标签: android remoteview

我使用两个应用程序。一个通过RemoteView接口公开AIDL。第二个使用ListView和自定义适配器来显示RemoteView

使用一个布局和一个TextView的非常简单的视图,TextView中的Listview为白色。

所有应用程序都使用相同的灯光样式。

是否可以将样式应用于RemoteView? 或者,如何管理RemoteView实例的样式?

由于

3 个答案:

答案 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来引用它。