2017-01-10 7 views
0

Я хочу изменить ImageView, когда boolean превращается в "true". В этом случае я хочу перейти от «обычных звезд» к «желтым звездам» в случае, если пользователи берут определенный опыт. У меня есть аналогичный код, используя ImageButton. Это изменит изображение при нажатии кнопки, но затем вернется к оригиналу.Как изменить ImageView без потери формата

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:drawable="@drawable/star_normal" 
      android:state_pressed="true" /> 
     <item android:drawable="@drawable/star_yellow" /> 
</selector> 

и

<ImageButton 
          android:layout_width="@dimen/_48sdp" 
          android:layout_height="@dimen/_48sdp" 
          android:id="@+id/star" 
          android:layout_weight="1" 
          android:layout_marginLeft="@dimen/_15sdp" 
          app:srcCompat="@drawable/star/> 

Как можно заменить ImageView без потери формата в раскладка сохранения положения, дп ???. Не используя кнопки, пользователь не должен изменять изображение самостоятельно.

+0

Почему вы обеспокоены размером? Изображения, которые вы пытаетесь переключить, имеют разные размеры? Если так, просто укажите maxWidth и maxHeight. –

+0

, потому что таким образом изображения можно увидеть с одинаковыми пропорциями в разных экранах, например здесь https://github.com/intuit/sdp – baldcl

ответ

0

Не фанат селекторов, так что я хотел бы сделать это программно, как так:

if (boolean){ 
    imageView.setImageResource(R.drawable.star_yellow); 
} 

Чтобы избежать изменения размера указать ваш ImageView XML как этот

<ImageView 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:id="@+id/img" 
    android:src="@drawable/star_normal" 
    android:maxHeight="48dp" 
    android:maxWidth="48dp"/>