0

ここで、ドローアブルの色をプログラムで変更することについて多くの質問を読みましたが、実際のレイアウトには関係ないようです。これを試すと:

RelativeLayout firstWord = (RelativeLayout)getActivity().findViewById(R.id.topBG);
Drawable layoutBG = firstWord.getDrawable();
firstWord = buttonBackground.mutate();
firstWord.setColorFilter(0xFFFF0000,Mode.MULTIPLY);

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

メソッド getDrawable() は、タイプ RelativeLayout に対して未定義です

ドローアブルを使用してレイアウトの角を丸くしましたが、アプリの一部はクリックするたびに背景色が変わるため、コードで色を変更する方法を知る必要があります。

ドローアブルに移行する前は、次を使用していました。

firstWord.setBackgroundColor(color);

これが私のドローアブルです:

round_corners.xml

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android">

    <stroke 
        android:width="1dp" 
        android:color="#000000" />

    <padding 
        android:left="1dp" 
        android:top="1dp"
        android:right="1dp" 
        android:bottom="1dp" />

    <corners 
        android:radius="25dp" />

</shape>

そして、ここに私のレイアウトxmlがあります:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".VulgarActivity" 
    android:id="@+id/bottomBG"
    android:background="#ffffff"
    >
    <View
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/drop_shadow"
        >
    </View> 
    <RelativeLayout
        android:id="@+id/topBG"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/round_corners" 
        >
    <TextView
        android:id="@+id/leftWord"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Push"
        android:textColor="#ffffff"
        android:textSize="50sp" 
        android:shadowColor="#080808"
        android:shadowRadius="10.0"
        android:shadowDx="5"
        android:shadowDy="5"
        />
    </RelativeLayout>

</RelativeLayout>

事前にすべての助けに感謝します:)

ちょっとした考え:

「round_corners.xml」の色の値を @color 参照に変更できます (例:

android:color="@color/switcher"

これを「color」フォルダーの値に入れます

<color name="switcher">#000000</color>

そのようにプログラムで色を変更する方が簡単でしょうか?

4

1 に答える 1

0

代わりにこれらの行を使用できますか?

RelativeLayout firstWord = (RelativeLayout)getActivity().findViewById(R.id.topBG);
Drawable layoutBG = firstWord.getBackground();
buttonBackground = buttonBackground.mutate();
buttonBackground.setColorFilter(0xFFFF0000,Mode.MULTIPLY);
于 2013-04-21T01:20:19.483 に答える