以编程方式设置形状的背景颜色

时间:2016-12-16 22:16:12

标签: android

我需要以编程方式更改形状的背景颜色,但我不知道如何。这是我到目前为止所做的:

<LinearLayout
   android:id="@+id/linearlayout_mediagalleryicon"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentRight="true"
   android:layout_alignParentTop="true"
   android:background="@drawable/circle_visual_feedback_selector"
   android:gravity="center"
   android:padding="10dp"
   android:clickable="true">
<ImageView
   android:id="@+id/imageview_mediagalleryicon"
   android:layout_width="35dp"
   android:layout_height="35dp" />
</LinearLayout>

circle_visual_feedback_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/circle_visual_feedback" />
</selector>

circle_visual_feedback.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
    <solid android:color="#40808080"/>
    <padding android:bottom="10dp" android:right="10dp" android:top="10dp" android:left="10dp"></padding>
</shape>

3 个答案:

答案 0 :(得分:0)

我不知道你到底想要做什么,但这可能对你有帮助。

((GradientDrawable)yourView.getBackground()).setColor(yourColor);

答案 1 :(得分:0)

试试这个:

findViewById(R.id.linearlayout_mediagalleryicon)
     .setBackgroundResource(R.drawable.circle_visual_feedback);

这会将 LinearLayout 的背景更改为 circle_visual_feedback

答案 2 :(得分:0)

view.getBackground().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

SRC_IN表示只应将颜色应用于您的圈子