Android - получение ширины кнопки, для которой установлено значение wrap_content - PullRequest
5 голосов
/ 15 октября 2011

Я пытаюсь получить ширину кнопки, для которой android:layout_width имеет значение wrap_content. Когда я пытаюсь сделать это в onCreate() с использованием getMeasuredWidth(), я получаю нулевое значение, потому что я думаю, что представление еще не готово.

Когда я тогда получу ширину? Есть ли какой-нибудь слушатель, к которому я могу подключиться после завершения инициализации view?

1 Ответ

13 голосов
/ 15 октября 2011

Вы можете добавить наблюдателя дерева в макет.Это должно вернуть правильную ширину и высоту.onCreate вызывается до того, как макет дочерних представлений сделан.Так что ширина и высота еще не рассчитаны.Чтобы получить высоту и ширину.Поместите это в метод onCreate

LinearLayout layout = (LinearLayout)findViewById(R.id.YOUD VIEW ID); 
ViewTreeObserver vto = layout.getViewTreeObserver();  
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {  
    @Override  
    public void onGlobalLayout() {  
        this.layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);  
        int width  = layout.getMeasuredWidth(); 
        int height = layout.getMeasuredHeight();  

    }  
}); 
...