在 livecard 中更改线性布局的背景

Change background of linearlayout in livecard

我正在尝试在实时卡片中出现特定状态时更改线性视图的颜色。我在我的 colors.xml 中添加了我想要的颜色,并且我能够在实时卡片布局本身中设置它们。

但是有没有办法通过代码设置背景?我看到没有 .setbackground 或类似的东西。

有没有办法做到这一点,或者我需要使用图片吗?

您可以尝试在 xml 中提供布局 ID,然后:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    if (mLiveCard == null) {
        mLiveCard = new LiveCard(this, LIVE_CARD_TAG);

        RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.live_card);
        remoteViews.setInt(R.id.my_layout, "setBackgroundResource", android.R.color.holo_red_dark);            
        mLiveCard.setViews(remoteViews);

        // Display the options menu when the live card is tapped.
        Intent menuIntent = new Intent(this, LiveCardMenuActivity.class);
        mLiveCard.setAction(PendingIntent.getActivity(this, 0, menuIntent, 0));
        mLiveCard.publish(PublishMode.REVEAL);
    } else {
        mLiveCard.navigate();
    }
    return START_STICKY;
}

xml:

<LinearLayout
android:id="@+id/my_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/card_margin"
tools:context=".LiveCardService">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />
</LinearLayout>

Full project on GitHub.