138

プログラムで画像を変更すると、レイアウトファイルに元々設定されていた古い画像の上に新しい画像が表示されますか?

これが私のレイアウトファイルのスニペットです:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="39dp"
    android:gravity="center_vertical" >
    <ImageView
        android:id="@+id/qStatusImage"
        android:layout_width="16dp"
        android:layout_height="16dp"
        android:layout_margin="5dp"
        android:background="@drawable/thumbs_down"
         />

    <TextView
        android:id="@+id/grp_child"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:textColor="@color/radio_colors"
        android:textStyle="normal"
        android:background="@color/grey"
    />

 </LinearLayout>

そして、imageView を設定するコード:

     @Override
public View getChildView(final int groupPosition, final int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {
//Answers
            if(answersGroup != null)
                   answersGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                       @Override
                    public void onCheckedChanged(RadioGroup group, int checkedId) {

                         //  int index = answersGroup.indexOfChild(findViewById(answersGroup.getCheckedRadioButtonId()));

                           qImageView = (ImageView) V.findViewById(R.id.qStatusImage);
                           if(ans ==0 || ans == 5){
                            //   qSV.setImageResource(0);
                               qImageView.setImageResource(R.drawable.thumbs_up);
                           }
                           else
                               qImageView.setImageResource(R.drawable.thumbs_down);

                       }
                   });

私は何が欠けていますか?

4

8 に答える 8

94

XML での使用:

android:src="@drawable/image"

ソースの使用:

imageView.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.your_image));
于 2016-01-19T13:28:52.843 に答える
71

簡潔な答え

res/drawable画像をフォルダにコピーして使用するだけです

imageView.setImageResource(R.drawable.my_image);

詳細

さまざまな答えが少し混乱を招く可能性があります。我々は持っています

名前に が含まれるメソッドはすべて、具体的にではなく、そのクラスにBackground属します。ただし、継承しているため、それらも使用できます。名前にが含まれるメソッドは、特に に属します。ViewImageViewImageViewViewImageImageView

メソッドはViewすべて互いに同じことを行います (setBackgroundDrawable()非推奨ですが) ので、setBackgroundResource(). 同様に、ImageViewメソッドはすべて同じことを行うので、 に焦点を当てますsetImageResource()。メソッド間の唯一の違いは、渡すパラメータのタイプです。

設定

FrameLayoutを含む を次に示しますImageView。最初ImageViewは画像がありません。( を追加したのはFrameLayout、周囲に境界線を配置できるようにするためです。そうすれば、 の端を見ることができますImageView。)

ここに画像の説明を入力

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/frameLayout"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:background="@drawable/border"
        android:layout_centerInParent="true">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    </FrameLayout>
</RelativeLayout>

以下では、さまざまな方法を比較します。

setImageResource()

ImageView の を使用する場合setImageResource()、画像は縦横比を維持し、収まるようにサイズ変更されます。2 つの異なる画像の例を次に示します。

  • imageView.setImageResource(R.drawable.sky);
  • imageView.setImageResource(R.drawable.balloons);

ここに画像の説明を入力

setBackgroundResource()

setBackgroundResource()一方、ビューの を使用すると、画像リソースが引き伸ばされてビューがいっぱいになります。

  • imageView.setBackgroundResource(R.drawable.sky);
  • imageView.setBackgroundResource(R.drawable.balloons);

ここに画像の説明を入力

両方

View の背景画像と ImageView の画像は別々に描画されるため、両方を設定できます。

imageView.setBackgroundResource(R.drawable.sky);
imageView.setImageResource(R.drawable.balloons);

ここに画像の説明を入力

于 2018-04-06T04:52:55.087 に答える
31
qImageView.setImageResource(R.drawable.img2);

私はこれがあなたを助けると思います

于 2016-02-29T09:07:05.333 に答える
2

上記の解決策が機能しない場合は、XML からこの行全体を削除してください

android:src="@drawable/image"

&試すだけ

imageView.setBackgroundResource(R.drawable.image);
于 2020-12-01T06:31:57.980 に答える