改变背景颜色的布局通过编程在android



我必须开发一个android应用程序。

我必须显示背景色为#424340为正常状态。但是我必须点击这些布局(选择和按下状态)意味着必须改变背景颜色为#FF0000。我怎么能做编程…请给我解决这些问题的方法。

我使用了下面的代码来编程创建布局:

LinearLayout ar = new LinearLayout(this);
            ar.setOrientation(LinearLayout.VERTICAL);
            ar.setPadding(3, 3, 3, 3);
            ar.setLayoutParams(artiLayoutParams);
            ar.setGravity(Gravity.CENTER); 
            ar.setBackgroundDrawable(getResources().getDrawable(R.drawable.list_selector));

在这里我必须点击这些布局意味着改变背景颜色。所以我用了下面的代码。请核对一下。

listrongelector.xml:

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 <!-- Selector style for listrow -->
 <item 
 android:state_selected="false"
 android:state_pressed="false" 
android:state_focused="false"
android:drawable="@drawable/gradient_bg" />
<item android:state_pressed="true"
android:state_selected="true" 
android:state_focused="true"
android:drawable="@drawable/gradient_bg_hover" />
 </selector>

gradient_bg.xml:

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

  <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
        <stroke android:width="3dp" android:color="#424340" />
        <padding android:left="3dp" android:top="3dp" android:right="3dp"
            android:bottom="3dp" />
        <corners android:radius="4dp" />
    </shape>

gradient_bg_hover.xml:

    <?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
        <stroke android:width="3dp" android:color="#FF0000" />
         <padding android:left="3dp" android:top="3dp" android:right="3dp"
            android:bottom="3dp" />
        <corners android:radius="4dp" />
        </shape> 

但是我的背景颜色没有改变。我的代码有什么问题?

你的状态好像不对。你能试试这个来确认它是否有效吗?

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 <!-- Selector style for listrow -->
 <item 
 android:state_pressed="false"
android:drawable="@drawable/gradient_bg" />
<item android:state_pressed="true"
android:drawable="@drawable/gradient_bg_hover" />
 </selector>

最新更新