2015-05-21 1 views
0

Я делаю свое первое Android-приложение в Android Studio. У меня есть ImageButton, который я хочу изменить по клику. Для этого я создал новый класс под названием Field, который расширяет класс ImageButton. поэтому, я использую это вместо ImageButton. И в поле класса я переопределил конструктор, чтобы добавить, что он устанавливает OnClickListener, когда он создает объект Field.ImageButton меняет размер, когда я меняю фон

Вот Java код, который я использовал для этого: `

public Field(Context context) { 
    super(context); 
    init(); 
} 

public Field(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    init(); 
} 

public Field(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    init(); 
} 

private void init(){ 
    setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      setImageResource(R.drawable.open); 
     } 
    }); 
}` 

Чем, когда я создаю Field объект в моей деятельности, OnClickListener устанавливается. И это работает. Однако новое изображение под названием open больше, чем мое предыдущее изображение под названием pic01, но оба изображения имеют одинаковый размер 185x185.

Вот моя активность XML:

<asd.clicker.Field 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/asd.clicker.Field1" 
    android:background="@drawable/pic01" 
    android:layout_above="@+id/asd.clicker.Field4" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginBottom="25dp" /> 

Я заметил, что, даже когда я просто изменить pic01 к open в моем XML, то open изображение больше, чем pic01, оба .png. Как я могу получить изображение того же размера, когда я нажимаю?

ответ

0

изменить две строки

android:layout_width="wrap_content" 
android:layout_height="wrap_content" 

в

android:layout_width="48dp" 
android:layout_height="48dp" 

или какой-либо другой размер вы wan't ваш взгляд есть. wrap_content изменит размер представления на основе отображаемого чертежа.