2011-12-22 2 views
0

Я создаю свои собственные Button просмотров (не расширен от android Button класс).Как настроить ту же самую высоту для всех кнопок динамически?

Высота кнопки зависит от размера экрана телефона. Это приложение должно показывать ту же самую высоту для всех кнопок экрана на всех телефонах, при этом возможны все размеры screen.

Тогда, я должен знать размер высоты кнопки, прежде чем добавлять его в layout, но я не знаю, какой размер он имеет, пока он не будет нарисован на экране.

Как я могу разместить ту же самую высоту на всех моих кнопках dynamically в зависимости от размера экрана?

спасибо

+0

@Caspar Kleijne, ли у попробовать решение? –

+0

Это не я, это ОП, я только что редактировал сообщение. –

ответ

0

Попробуйте это. Вы можете рассмотреть вопрос о выборе размера телефона 320 x480 и проверить, какая максимальная ширина и высота для одной кнопки на нем. В приведенном ниже классе вычисляются ширина и высота, основанные на ширине и высоте устройства. Скажите, что вы узнали, что вам нужно 40 в качестве ширины/высоты для вашей кнопки, а затем просто пропустите 40 в качестве параметра для вычисления функцииWidth()/calculateHeight() для данного класса. В режиме исполнения ширина и высота будут установлены динамически ,

public class DimensionManager { 

    private int _screenWidth; 
    private int _screenHeight; 
    private int _baseScreenWidth = 320; 
    private int _baseScreenHeight = 480; 

    public DimensionManager(Activity act) { 
     WindowManager w = act.getWindowManager(); 
     Display d = w.getDefaultDisplay(); 
     _screenWidth = d.getWidth(); 
     _screenHeight = d.getHeight(); 
    } 
/** 
* 
* @param baseViewWidth Width considering a base Layout. 
* @return Returns corresponding width for the device and orientation. 
*/ 
    public int calculateWidth(int baseViewWidth) { 
     return (baseViewWidth * _screenWidth)/_baseScreenWidth; 
    } 
    /** 
    * 
    * @param baseViewHeight Height considering a base Layout. 
    * @return Returns corresponding height for the device and orientation. 
    */ 
    public int calculateHeight(int baseViewHeight) { 
     return (baseViewHeight * _screenHeight)/_baseScreenHeight; 
    } 
} 
Смежные вопросы