2016-12-16 11 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

関連する問題