2016-12-16 159 views
0

我需要以编程方式更改形状的背景颜色,但我不知道如何。这里是我迄今所做的:以编程方式设置形状的背景颜色

<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> 

回答

0

我不知道到底是什么你正在尝试做的,但这可能对你有帮助。

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

我曾经尝试这样做,它设置的所有的LinearLayout,不只是圆 – student

0

试试这个:

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

这会改变你的的LinearLayout的背景circle_visual_feedback

0

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

SRC_IN意味着它应该只在颜色应用到你的圈子

+0

我当我使用这条线得到NullPointerException异常背景的代码与我的ImageView对象。我将它应用于linearlayout,但没有任何改变。 – student

+0

那是因为您的ImageView没有适用于它的背景。我可以问你为什么不只是用xml来修正颜色而不是用编程的方式来修正颜色呢?它是动态的吗? – Dom

+0

是的,它是动态的 – student