Wenn ich das Bild programmgesteuert ändere, wird ein neues Bild über dem alten Bild angezeigt, das ursprünglich in der Layoutdatei festgelegt wurde.
Hier ist ein Ausschnitt aus meiner Layoutdatei:
<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>
Und der Code, der die imageView festlegt:
@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);
}
});
Was vermisse ich?
image.setImageResource(R.drawable.icon_dot1);
setBackgroundResource()
:( wurde das vorhandene Bild nicht entfernt, bevor das neue Bild verwendet wurde. Daher sind dort zwei Bilder kollidiertsetImageResource()
. Trotzdem ... der Beitrag hat mich auf den richtigen Weg gebracht - mein Dank für beide Antworten!setImageResource
?ImageView.setImageResource(R.drawable.image);
arbeitete für michVerwendung in XML:
Quellenverwendung:
quelle
Kurze Antwort
Kopieren Sie einfach ein Bild in Ihren
res/drawable
Ordner und verwenden SieEinzelheiten
Die Vielzahl der Antworten kann zu Verwirrung führen. Wir haben
setBackgroundResource()
setBackgroundDrawable()
setBackground()
setImageResource()
setImageDrawable()
setImageBitmap()
Die Methoden mit
Background
ihrem Namen gehören alle zurView
Klasse, nichtImageView
speziell. Aber daImageView
erbt vonView
Ihnen können Sie sie auch verwenden. Die Methoden mitImage
in ihrem Namen gehören speziell dazuImageView
.Die
View
Methoden machen alle dasselbe (obwohl siesetBackgroundDrawable()
veraltet sind), also konzentrieren wir uns nur daraufsetBackgroundResource()
. In ähnlicher Weise machenImageView
alle Methoden dasselbe, also konzentrieren wir uns nur daraufsetImageResource()
. Der einzige Unterschied zwischen den Methoden besteht darin, welche Art von Parameter Sie übergeben.Konfiguration
Hier ist eine
FrameLayout
, die eine enthältImageView
. Der hatImageView
anfangs kein Bild drin. (Ich habe nur das hinzugefügt,FrameLayout
damit ich einen Rand darum legen kann. Auf diese Weise können Sie den Rand des sehenImageView
.)Nachfolgend werden wir die verschiedenen Methoden vergleichen.
setImageResource ()
Wenn Sie ImageViews verwenden
setImageResource()
, behält das Bild sein Seitenverhältnis bei und wird an die Größe angepasst . Hier sind zwei verschiedene Bildbeispiele.imageView.setImageResource(R.drawable.sky);
imageView.setImageResource(R.drawable.balloons);
setBackgroundResource ()
Wenn Sie
setBackgroundResource()
dagegen Ansichten verwenden, wird die Bildressource gedehnt, um die Ansicht zu füllen.imageView.setBackgroundResource(R.drawable.sky);
imageView.setBackgroundResource(R.drawable.balloons);
Beide
Das Hintergrundbild der Ansicht und das Bild der ImageView werden separat gezeichnet, sodass Sie beide festlegen können.
quelle
setImageResource
:Sets a drawable as the content of this ImageView. This does Bitmap reading and decoding on the UI thread, which can cause a latency hiccup. If that's a concern, consider using setImageDrawable(Drawable) or setImageBitmap(Bitmap) and android.graphics.BitmapFactory instead.
Ich denke, das wird dir helfen
quelle
In Ihrem XML für die Bildansicht, wo Sie dies
android:background="@drawable/thumbs_down
geändert habenandroid:src="@drawable/thumbs_down"
Derzeit wird dieses Bild als Hintergrund für die Ansicht und nicht als tatsächliches Bild darin platziert.
quelle
Im XML-Design
Zeichenbares Bild per Code
Server-Image
quelle
Sie können verwenden
oder in Java Java
quelle