2010-10-15 2 views
2

Я делаю удаленное приложение, поэтому мне нужно различное количество кнопок, сгруппированных по таблицам и табло.Как установить ширину макета кнопки во время выполнения?

Я могу создать исправление (которое должно быть alwasy быть доступным) в designtime через xml, используя макеты, делая все кнопки подходящими для каждого разрешения.

Но есть кнопки, которые я должен создать во время выполнения. Чтобы заставить их вести себя так же, как и фиксированные, мне нужно назначить ширину макета, -высокие и весовые значения.

Я искал всю документацию, но там это всегда делается в XML, не говоря о процедурах выполнения/соответствия.

Возможно ли это? Как еще я могу создать сетку кнопок со всеми сторонами?

Большое спасибо!

ответ

4

Button должен наследовать setWidth(int pixels) из TextView (так как он расширяет его). Вы пробовали использовать это? Например .:

myButton.setWidth(100); 
myButton.setHeight(50); 
//Now myButton is 100px wide and 50px tall 

Убедитесь, что вы раскроете выпадающий на «Наследование методы», когда вы ищете методы на Button страницы в документации. Вы также можете расширить «Наследуемые атрибуты».

Редактировать: Хорошо, я укушу - если вы хотите сохранить независимость экрана, вам нужно будет использовать dip-единицы. Документах обсудить это here, но это было бы что-то вроде следующего:

//Find screen density scale factor 
final float scale = getContext().getResources().getDisplayMetrics().density; 

int width = (int)(100 * scale) // Or whatever width you want 
int height = (int)(50 * scale) // Or whatever height you want 
myButton.setWidth(width); 
myButton.setHeight(height); 

Примечание: Это пример. Это не предназначено для производственного кода. Вероятно, у вас нет кнопки с именем myButton. Пожалуйста, приспособите это к вашим конкретным потребностям или прочитайте связанную документацию для получения дополнительной справки и т. Д.

+1

Не используйте абсолютные пиксели – Falmarri

+1

@Falmarri: Я собираюсь предположить, что вы имеете в виду, что dip-единицы - лучший способ сделать это, хотя ваш комментарий действительно слишком расплывчатый, чтобы быть особенно полезным, чтобы я мог быть совершенно неправым. В любом случае, я добавлю некоторый код масштабирования, который я первоначально пропустил из-за тривиального характера вопроса. Я также предлагаю, чтобы вы рассматривали возможность публикации более полезных комментариев, поскольку одноразовые комментарии «не делайте этого» действительно не способствуют обсуждению, но это зависит от вас. – eldarerathis

Смежные вопросы