Android ImageButton setMaxheight няма ефект

Използвам оформление на таблица за оформление на бутони с помощта на тежести, бутоните получават 0dip size или 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