5

問題は、形状の色を設定することから始まります。で1つの長方形を作成し、このようdrawableに設定しましたImageView

<LinearLayout 
        android:layout_width="0dp" 
        android:layout_height="fill_parent" 
        android:orientation="vertical" 
        android:layout_weight="0.15" 
        android:layout_marginRight="10dp"
        android:gravity="center_vertical">
       <ImageView 
        android:id="@+id/iv_priority"
        android:src="@drawable/case_priority"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"/>
</LinearLayout>

編集

私の case_priority.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
  <solid android:color="#009600" />
  <size android:width="30dp"
        android:height="30dp" />
</shape>

ここで、この形状の色を変更する必要があります。実際、この色は Web サービスからのもので、変更する必要があります。私の質問は次のとおりです。この形状の色をプログラムで変更するにはどうすればよいですか。イメージビューに設定します。私はstackoverflowでいくつかの例を見てきましたが、画像ビューに変更することはできません.助けてください!!!! 前もって感謝します。

編集:

私の質問が明確ではなかったのかもしれません。実際には、実際にドローアブルであるソースを設定する ImageView があります。上記の私のコードのように、デフォルトでは緑色です。Web サービスは、それに応じて変更する必要があるこのイメージ ビューの色を返すため、実行時に xml から変更できないため、Java ファイルから変更する必要があります。形状と画像のビューを使用しているため、.setBackground() はここではあまり役に立ちません。したがって、これに対する考えられる解決策は何ですか。回答ありがとうございます。ご迷惑をおかけして申し訳ありません。

4

6 に答える 6

10

すべての回答に感謝します。回答を得るのに役立ちました。

レイアウトを変更android:src="" to android:background="@drawable/case_priority" し、Java ファイルに次のコードを含めました:->

        Resources res = getResources();
        final Drawable drawable = res.getDrawable(R.drawable.case_priority);
        drawable.setColorFilter(Color.YELLOW, Mode.SRC_ATOP);
        ImageView img = (ImageView)findViewById(R.id.iv_priority);
        img.setBackgroundDrawable(drawable);

それでおしまい。それが誰かになることを願っています。

于 2012-05-22T09:43:25.187 に答える
3

これを画像ビューに追加

android:background="#152" // or some other color code

編集1: コードでそれを行うには、これを行います

ImageView.setBackgroundColor(Color.parseColor("red")); // Or any color code like #000 , #987

編集2:

ImageView Imgs = (ImageView) findViewById(R.id.iv_priority);

Imgs.setBackgroundColor(Color.parseColor("ColorCode"));
于 2012-05-16T12:14:41.343 に答える
3

こちらをご覧ください

http://developer.android.com/guide/topics/graphics/2d-graphics.html#shape-drawable

Shapein コードを作成する代わりに、inflate必要に応じて XML を拡張するために使用できます。

于 2012-05-16T12:19:18.617 に答える
2

IimageView.setBackgroundColor("#152");

于 2012-05-16T12:20:54.657 に答える
1

すべてのソリューションは、ImageView の背景を使用することを提案しています。これは望ましい解決策ではないと思います。質問は、直観的なアプローチが何であるかをすでに反映しています:属性に形状を適用しsrcます。プログラムで形状の色を変更するには、次のようにします。

GradientDrawable drawable = (GradientDrawable) priorityImageView.getDrawable();
drawable.setColor(Color.RED);

元の質問のように形状が割り当てられているとします。

<ImageView 
    android:id="@+id/iv_priority"
    android:src="@drawable/case_priority"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/>

これには、ImageView の背景をそのコンテンツとは別に設定できるという利点もあります。

于 2013-12-10T13:30:41.110 に答える
0

Lars Blumberg の答えとして、背景も変更したくなかったので、GradientDrawable がなかったので、次のコードを画像に適用しました。

Drawable drawable = imageView.getDrawable();
drawable.setColorFilter(Color.CYAN, PorterDuff.Mode.MULTIPLY);
于 2016-03-21T12:10:57.020 に答える