2013-04-13 5 views
0

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

Это то, чем я до сих пор не повезло. Либо кнопки слишком большие, слишком маленькие, или скрыты, так как ширина 0.

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     LinearLayout layout = new LinearLayout(this); 
     layout.setOrientation(LinearLayout.VERTICAL); 
     layout.setLayoutParams(new LayoutParams(
       LayoutParams.MATCH_PARENT, 
       LayoutParams.MATCH_PARENT)); 
     layout.setWeightSum(1); 

     Button redButton = new Button(this); 
     redButton.setText("Red"); 
     LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
       0, 
       LayoutParams.WRAP_CONTENT, 
       0.25f); 
     redButton.setWidth(0); 
     redButton.setLayoutParams(p); 
     layout.addView(redButton); 

     Button greenButton = new Button(this); 
     greenButton.setText("Green"); 
     greenButton.setLayoutParams(p); 
     greenButton.setWidth(0); 
     layout.addView(greenButton); 

     Button blueButton = new Button(this); 
     blueButton.setText("Blue"); 
     blueButton.setLayoutParams(p); 
     blueButton.setWidth(0); 
     layout.addView(blueButton); 

     Button yellowButton = new Button(this); 
     yellowButton.setText("Yellow"); 
     yellowButton.setLayoutParams(p); 
     yellowButton.setWidth(0); 
     layout.addView(yellowButton); 

     setContentView(layout); 
    } 
+2

Почему вы не используете xml для этого? –

+0

Попытка сделать что-то другое. Я уже знаю, как это сделать с XML, но я хочу поиграть с программными макетами для приложения, над которым я работаю, для чего потребуется некоторый динамический макет. – NadeMaster

ответ

1

Что о получении разрешения для экрана устройств, используя что-то вроде этого:

Display d = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
int screen_width = d.getWidth(); 
int screen_height = d.getHeight(); 

, а затем говорят, что если вы хотите 4 кнопки с одинаковой шириной по экрану, вызывающие из вашего примера greenButton.setWidth(screen_width/4);

и сделайте это для каждой из ваших кнопок ... та же ширина, распространяющаяся по разрешению любого размера экрана, все динамически выполняется!

+0

просто ссылка на получение ширины и высоты отображения была взята из этого потока SO http://stackoverflow.com/questions/2902640/android-get-the-screen-resolution-pixels-as-integer-values ​​(так что я не знаю если он действительно работает) – brendosthoughts

+0

Это устаревший метод, не означает ли это, что он будет удален в будущих версиях? – NadeMaster

+0

Да, это означает, что, проверьте страницы разработчика Android. Я уверен, что они внедрили новый способ сделать то же самое функционально (это всего лишь пример того, как это сделать) ... получить ширину отображения, заданную каждой кнопкой до 1/4 ширины – brendosthoughts