Android ImageButton setMaxheight не имеет эффекта

Я использую макет таблицы для размещения кнопок с использованием весов, кнопки получают размер 0dip или wrap_content, поэтому они расширяются по своему весу.

Я пытаюсь преобразовать кнопку в ImageButton и установить изображение в размере кнопки, а не расширять его.

Я позволяю кнопке создаваться и получать ее размер, а затем назначаю изображение и ограничиваю его высоту с помощью ImageButton.setMaxHeight();

final ImageButton ib = (ImageButton) findViewById(R.id.buttonOptions);
    ib.post(new Runnable() {
        public void run() {
            final int height = ib.getHeight();
            ib.setScaleType(ScaleType.FIT_CENTER);
            ib.setMaxHeight(5); // or height    
            ib.setImageResource(R.drawable.options);

        }});

Изображения рисуются в исходном размере, таким образом расширяя кнопку... setMaxHeight() не ограничивает высоту/ширину изображения. Есть идеи, почему?


person aviran    schedule 02.01.2013    source источник


Ответы (3)


решил это с помощью

ib.setAdjustViewBounds(true);
person aviran    schedule 02.01.2013
comment
Хорошее решение. Спасибо - person Amarildo; 25.03.2017

ViewTreeObserver observer = ib.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
//here you can get height and set height
}

Не уверен, но попробуй, может тебе поможет.

person Android Killer    schedule 02.01.2013
comment
тот же результат, кнопка увеличивается до размера изображения - person aviran; 02.01.2013
comment
@aviran попробуйте ib.setBackgroundResource(R.drawable.options); вместо ib.setImageResource(R.drawable.options); - person Android Killer; 02.01.2013

setMaxHeight() предназначен для кнопки изображения, а не для изображения в ней.

Пытаться,

ib.setScaleType(ScaleType.CENTER_CROP);
person Johny Smith    schedule 02.01.2013
comment
тот же результат, кнопка увеличивается до размера изображения - person aviran; 02.01.2013
comment
Попробуйте установить ширину и высоту макета, например android:layout_width=60dp android:layout_height=60dp. - person Johny Smith; 02.01.2013