2013-08-30 255 views
2

我使用兩個應用程序。一個通過AIDL接口暴露RemoteView。第二個使用ListView和自定義適配器來呈現RemoteView將樣式應用於RemoteView?

帶有一個佈局和一個TextView的非常簡單的視圖,TextViewListview中是白色的。

所有應用程序使用相同的燈光風格。

是否可以將樣式應用於RemoteView? 或者,如何管理RemoteView實例的樣式?

感謝

回答

0

RemoteView不支持更改主題。然後唯一的辦法就是保留兩個佈局文件具有相同的佈局和不同的主題(像不同的字體顏色),並且在更新appWidget之前,可以選擇任何一種佈局作爲RemoteView

+0

我將問題簡化爲一個非常小的應用程序。 'public class MainActivity extends Activity {0} {0} {0}保護無效onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RemoteViews rv = new RemoteViews(MainActivity.class.getPackage()。getName(),R.layout.provider1); ViewGroup vg =(ViewGroup)findViewById(R.id.remoteview); 查看v = rv.apply(this,vg); vg.addView(v); } }' activity_main.xml與一個RelativeLayout和provider1.xml與一個簡單的文本視圖。但是使用remoteview生成的textview是白色的,而不是黑色的。 –

+0

@ user1875107嗨,Android RemoteView不支持活動的普通佈局支持的多主題。在你看來,唯一的辦法就是保持remoteviews的兩種不同的佈局。 – Isaiah

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); 
0

我通過爲遠程視窗創建一個佈局文件(在我的情況,我是一個自定義通知創建模板)和兩個styles.xml文件,一個在值,另一個值-V21解決了這個問題。這樣,我就可以將材質樣式應用於棒棒糖,並適用於以前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> 

然後裏面的佈置,只是指它與[email protected]/mediaNotificationTitle