プログラムで画像を変更すると、レイアウトファイルに元々設定されている古い画像の上に新しい画像が表示されますか?
これが私のレイアウトファイルのスニペットです。
<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);
}
});
私は何が欠けていますか?
これは、バックグラウンドではなくImageView
のsrcを設定しているために発生します。
代わりにこれを使用してください:
qImageView.setBackgroundResource(R.drawable.thumbs_down);
ここ は、2つのメソッドの違いについて話すスレッドです。
XMLで使用:
Android:src="@drawable/image"
ソースの使用:
imageView.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.your_image));
qImageView.setImageResource(R.drawable.img2);
これはあなたを助けると思う
res/drawable
フォルダーに画像をコピーして使用するだけです
imageView.setImageResource(R.drawable.my_image);
さまざまな答えが少し混乱を引き起こす可能性があります。我々は持っています
setBackgroundResource()
setBackgroundDrawable()
setBackground()
setImageResource()
setImageDrawable()
setImageBitmap()
名前にBackground
が含まれるメソッドは、すべてView
にではなく、ImageView
クラスに属します。ただし、ImageView
はView
を継承するため、使用することもできます。名前にImage
が含まれるメソッドは、特にImageView
に属します。
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>
以下では、さまざまな方法を比較します。
ImageViewのsetImageResource()
を使用する場合、画像はアスペクト比を維持し、収まるようにサイズ変更されます。以下に2つの異なる画像の例を示します。
imageView.setImageResource(R.drawable.sky);
imageView.setImageResource(R.drawable.balloons);
一方、ViewのsetBackgroundResource()
を使用すると、画像リソースが拡大されてビューがいっぱいになります。
imageView.setBackgroundResource(R.drawable.sky);
imageView.setBackgroundResource(R.drawable.balloons);
ビューの背景画像とImageViewの画像は別々に描画されるため、両方を設定できます。
imageView.setBackgroundResource(R.drawable.sky);
imageView.setImageResource(R.drawable.balloons);
Android:background="@drawable/thumbs_down
がある画像ビューのXMLで、これをAndroid:src="@drawable/thumbs_down"
に変更します
現在、その画像を実際の画像ではなく、ビューの背景として配置しています。
XMLデザインの場合
Android:background="@drawable/imagename
Android:src="@drawable/imagename"
コードによる描画可能画像
imageview.setImageResource(R.drawable.imagename);
サーバーイメージ
## Dependency ##
implementation 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
Glide.with(context).load(url) .placeholder(R.drawable.image)
.into(imageView);
## dependency ##
implementation 'com.squareup.picasso:picasso:2.71828'
Picasso.with(context).load(url) .placeholder(R.drawable.image)
.into(imageView);
使用できます
val drawableCompat = ContextCompat.getDrawable(context, R.drawable.ic_emoticon_happy)
またはJava java
Drawable drawableCompat = ContextCompat.getDrawable(getContext(), R.drawable.ic_emoticon_happy)