3

別のクラスを使用してウィジェットの色を変更しようとしています。しかし、このレイアウトは別の xml ファイルにあるため、変更しようとしているレイアウトが見つかりません。ウィジェットのレイアウトには、shape.xml を背景として使用する LinearLayout があります。私は多くのことを試しましたが、何もうまくいきませんでした。

MyShape.xml は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<solid
android:color="#DDf5f5f5" />

<stroke
android:width="2dp"
android:color="#FFFFFFFF" />

<corners
android:bottomLeftRadius="7dp"
android:bottomRightRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp" />
</shape>

そして、これは、[カラーの変更] ボタンをクリックしたときにクラスが行うことです。

public void onClick(View v) {

LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(getApplicationContext().LAYOUT_INFLATER_SERVICE);
LinearLayout myRoot = new LinearLayout(getApplicationContext());
View itemView = inflater.inflate(R.layout.widget_layout, myRoot);
LinearLayout linear = (LinearLayout) itemView.findViewById(R.id.layout);

GradientDrawable sd = (GradientDrawable) linear.getBackground().mutate();
sd.setColor(picker.getColor());
}

クラス WidgetColorPicker はレイアウト「widget_color.xml」を使用し、変更したい LinearLayout は「widget_layout.xml」にあります。

4

0 に答える 0