0

ボタンにグラデーションの外観を適用できる xml ファイル res/color/btn_black があります。

次を呼び出すことで、layout.xml で正常に使用できます。

<Button
    android:background="@color/btn_black"
/>

他の場所では、Java でボタンを動的に作成しており、同じスタイルを適用したいと考えています。これを試してみると:

myButton.setBackgroundColor(getResources().getColor(R.color.btn_black));

次のエラーが表示されます。

android.content.res.Resources$NotFoundException: 
  File res/color/btn_black.xml from color state list resource ID #0x7f040001

これは、ここで回答した他の質問から正しい方法のようですが、うまくいきません。私は何を間違っていますか?

編集: これは参照用のファイル btn_black.xml です

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true" >
    <shape>
        <solid
            android:color="#343434" />
        <stroke
            android:width="1dp"
            android:color="#171717" />
        <corners
            android:radius="3dp" />
        <padding
            android:left="10dp"
            android:top="10dp"
            android:right="10dp"
            android:bottom="10dp" />
    </shape>
  </item>
  <item>
    <shape>
        <gradient
            android:startColor="#343434"
            android:endColor="#171717"
            android:angle="270" />
        <stroke
            android:width="1dp"
            android:color="#171717" />
        <corners
            android:radius="4dp" />
        <padding
            android:left="10dp"
            android:top="10dp"
            android:right="10dp"
            android:bottom="10dp" />
    </shape>
  </item>
</selector>
4

2 に答える 2