Kiedy zmieniam obraz programowo, pokazuje on nowy obraz na górze starego obrazu, który jest pierwotnie ustawiony w pliku układu?
Oto fragment mojego pliku układu:
<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>
Oraz kod, który ustawia 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);
}
});
czego mi brakuje?
image.setImageResource(R.drawable.icon_dot1);
setBackgroundResource()
:( nie usunęło istniejącego obrazu przed użyciem nowego obrazu .. więc otrzymałem dwa zderzające się tam obrazy.setImageResource()
Działało :) Mimo to… post zaprowadził mnie na właściwą ścieżkę - dziękuję za obie odpowiedzi!setImageResource
?ImageView.setImageResource(R.drawable.image);
pracowała dla mnieUżyj w XML:
Wykorzystanie źródła:
źródło
Krótka odpowiedź
Po prostu skopiuj obraz do swojego
res/drawable
folderu i użyjDetale
Różnorodność odpowiedzi może spowodować trochę zamieszania. Mamy
setBackgroundResource()
setBackgroundDrawable()
setBackground()
setImageResource()
setImageDrawable()
setImageBitmap()
Wszystkie metody mające
Background
w nazwie należą doView
klasy, a nieImageView
konkretnie. Ale ponieważImageView
dziedziczy poView
tobie, też możesz z nich korzystać. Metody mająceImage
w nazwie należą konkretnie doImageView
.Wszystkie
View
metody robią to samo co inne (chociażsetBackgroundDrawable()
są przestarzałe), więc skupimy się tylko nasetBackgroundResource()
. Podobnie,ImageView
wszystkie metody robią to samo, więc po prostu się na nich skupimysetImageResource()
. Jedyną różnicą między tymi metodami jest typ przekazywanego parametru.Ustawiać
Oto plik
FrameLayout
zawierający plikImageView
.ImageView
Początkowo nie ma żadnego obrazu w nim. (Dodałem tylko poFrameLayout
to, aby móc umieścić wokół niego obramowanie. W ten sposób możesz zobaczyć krawędźImageView
.)Poniżej porównamy różne metody.
setImageResource ()
Jeśli używasz ImageView
setImageResource()
, obraz zachowuje proporcje i jest dopasowywany do rozmiaru. Oto dwa różne przykłady obrazów.imageView.setImageResource(R.drawable.sky);
imageView.setImageResource(R.drawable.balloons);
setBackgroundResource ()
setBackgroundResource()
Z drugiej strony korzystanie z widoku powoduje rozciągnięcie zasobu obrazu w celu wypełnienia widoku.imageView.setBackgroundResource(R.drawable.sky);
imageView.setBackgroundResource(R.drawable.balloons);
Obie
Obraz tła widoku i obraz ImageView są rysowane oddzielnie, więc możesz ustawić je oba.
źródło
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.
Myślę, że to ci pomoże
źródło
W twoim XML dla widoku obrazu, gdzie
android:background="@drawable/thumbs_down
zmieniłeś to naandroid:src="@drawable/thumbs_down"
Obecnie umieszcza ten obraz jako tło widoku, a nie rzeczywisty obraz w nim.
źródło
W projektowaniu XML
Obraz do rysowania za pomocą kodu
Obraz serwera
źródło
Możesz użyć
lub w java java
źródło