0

次のようなシェイプ ドローアブルの背景色を使用する XML が多数あります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:background="@drawable/background"
/>

私の形状の背景xmlは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient 
        android:type="linear"
        android:startColor="#FFffffff"
        android:endColor="#FFE8E8E8"
        android:angle="315" />    
</shape>

ここで、ユーザーに背景色を変更するオプションを提供する機能を追加したいと考えています。xml をロードするアクティビティに移動してそれを変更する代わりに、何らかの値に基づいてソース シェイプ ドローアブルを変更できる簡単な方法はありますか?

ありがとうございました。

4

2 に答える 2

0

異なる名前のユーザーのリストまたはボタンを作成できます。クリックしたボタンに基づいて、レイアウトの背景をプログラムで変更できます。例えば:

 @Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.drawable1Button:
             final int sdk = android.os.Build.VERSION.SDK_INT;
             if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
             layout.setBackgroundDrawable( getResources().getDrawable(R.drawable.drawable1) );
             } else {
               layout.setBackground( getResources().getDrawable(R.drawable.drawable1));
             }

            break;

        case R.id.drawable2Button:
             final int sdk = android.os.Build.VERSION.SDK_INT;
             if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
             layout.setBackgroundDrawable( getResources().getDrawable(R.drawable.drawable2) );
             } else {
               layout.setBackground( getResources().getDrawable(R.drawable.drawable2));
             }
             break;
        case R.id.drawable3Button:
             final int sdk = android.os.Build.VERSION.SDK_INT;
             if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
             layout.setBackgroundDrawable( getResources().getDrawable(R.drawable.drawable3) );
             } else {
               layout.setBackground( getResources().getDrawable(R.drawable.drawable3));
             }
            break;
        }
       }
于 2016-10-27T05:59:30.163 に答える
0

background.xml を変更する

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/shape_id">
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="line">
            <gradient
                android:angle="315"
                android:endColor="#FFE8E8E8"
                android:startColor="#FFffffff"
                android:type="linear" />

        </shape>
    </item>
</layer-list>

ボタンをクリックすると、変更したい色の組み合わせを見つけて、その色を配列に入れ、クリックすると変更されます。

 final LinearLayout l =(LinearLayout)findViewById(R.id.linearLayout);
        l.setBackgroundResource(R.drawable.background);
      final  View v = findViewById(R.id.linearLayout);
        Button b =(Button)findViewById(R.id.button);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int colors[] = { 0xff255779, 0xffa6c0cd };
                GradientDrawable gradientDrawable = new GradientDrawable(
                        GradientDrawable.Orientation.TOP_BOTTOM, colors);
                l.setBackground(gradientDrawable);

            }
        });
于 2016-10-27T06:56:32.277 に答える