0

描画可能な背景を持つウィジェット レイアウトがあります。

<RelativeLayout
    android:id="@+id/basic_widget_layout"
    android:background="@drawable/basic_widget_style_2"
    android:clickable="true" >

@drawable/basic_widget_style_22 つの形状のレイヤー リストです。

また、リアルタイムの微調整のためにウィジェットのプレビューを表示する構成アクティビティもあります。

<include android:id="@+id/preview_include"
         layout="@layout/basic_widget_layout" />

@drawable/basic_widget_style_2構成アクティビティをプログラムで微調整し、リアルタイムの結果を で確認しようとしています@+id/preview_include

私の構成アクティビティには、私を起動した特定の appWidgetId があるので、私の質問は、@drawable/basic_widget_style_2私のアクティビティを起動したウィジェットに属する を取得する方法はありますか?

さらに、<include>-ed レイアウト バックグラウンド ドローアブルを無効にするにはどうすればよいですか? 私が何をしても、レイアウトは静的なままのようです(invalidate()、refreshDrawable()、および私が見たその他のトリックを使用してみました)。

4

1 に答える 1

0

バックグラウンドのドローアブルで何を変更したいのか正確にはわかりません。

ビューの描画可能な形状を取得するには、形状を含むアイテムに ID を割り当ててから、次の操作を行う必要があります。

//change the color to the specific needed
LayerDrawable preview_include = (LayerDrawable)(this.findViewByID(R.id.preview_include)).getBackground();
final GradientDrawable preview_include_shape = (GradientDrawable)   include.findDrawableByLayerId(R.id.rectange);

たとえば、形状の色を変更する場合は、次のようにします。

        preview_include_shape.setColor(getResources().getColor(getResId("white", R.color.class)));

形状を持つ XML Drawable は次のようになります。

<?xml version="1.0" encoding="utf-8"?>

<!-- Up 2dp Shadow -->
<item >
    <shape  android:shape="rectangle">

        <solid android:color="@color/shadow" />
         <corners 
          android:radius="3dp"
             />
    </shape>
</item>

<!-- A rectange -->
<item android:top="3px" android:id="@+id/rectange">
    <shape android:shape="rectangle">
        <corners 
            android:topLeftRadius="3dp"
            android:topRightRadius="3dp"
            android:bottomLeftRadius="3dp"
            android:bottomRightRadius="3dp"/>
            <solid android:color="@color/black"
                    />
    </shape>
</item>

于 2014-03-06T09:21:46.123 に答える