2015-09-22 5 views
0

У меня есть 2 кнопки, и мне нужно сделать их с одинаковой (самой большой) шириной. Что-то вродеКак сделать кнопки с одинаковой шириной программно

if(button1.getWidth() > button2.getWidth){ 
    button2.setWidth(button1.getWidth()); 
} 
else{ 
    button1.setWidth(button2.getWidth()); 
} 

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

Когда я использую LayoutParams он не работает слишком

LinearLayout.LayoutParams = new LinearLayout.LayoutParams(button1.getWidth(), 
                  button2.getHeight()); 
// Or ViewGroup.LayoutParams 
+0

Какие объекты являются переменные '' button1' и button2'? – Sector95

+0

Default android «Button» type –

+0

Параметры макета работают, вы просто используете его неправильно. Задайте размер в конечной переменной, а затем установите оба значения для этого значения. Если вы хотите рассмотреть различные размеры экрана, добавьте множитель в базовое значение, которое масштабируется или уменьшает масштаб на основе размера экрана. Но не устанавливайте ширину кнопки A на кнопку B, которая имеет некоторую произвольную ширину, а затем отменяет ее. Это не сработает. – portfoliobuilder

ответ

1

Заверните их в LinearLayout и установите width в 0dp и weight равных значений как 1. Я полагаю, вы также можете сделать это программно.

+0

Я думаю об этом, но я хотел бы понять, что неправильно в моем методе. –

0

Использование

Button.getLayoutParams().width 
Button.getLayoutParams().height 

вместо

Button.getWidth() 
Button.getHeight() 

, чтобы получить ширину высоту кнопки.

и установить ширину, равную button1 button2

button1.getLayoutParams().width = button2.getLayoutParams().width; 

и наоборот.

+0

Я попробовал button2.setWidth (button1.getLayoutParams(). Width); Вместо этого button2.setWidth (button1.getWidth()); Но он производит тот же неправильный результат –

+0

button1.getLayoutParams(). Width = button2.getLayoutParams(). Width; Эта конструкция не имеет никакого эффекта –

+0

Вы пробовали это. –

1

Положите обе кнопки в LinearLayout и установить кнопки андроид: layout_width = "0dp" и андроид: layout_weight = "1"

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal"> 
    <Button 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Button 1" /> 
    <Button 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Button 2" /> 
</LinearLayout> 
Смежные вопросы