2013-06-13 21 views
1

Я хотел бы сделать кнопку (одна между двумя другими кнопками).Как сделать квадрат кнопки и изменить размер

enter image description here

Я пытался использовать следующий код:

toggleButton = (ToggleButton) findViewById(R.id.activity_dictionary_toggleButton1); 
LinearLayout.LayoutParams toggleButtonLayoutParams = (LayoutParams) toggleButton.getLayoutParams(); 
toggleButtonLayoutParams.width = toggleButtonLayoutParams.height; 
toggleButton.setLayoutParams(toggleButtonLayoutParams); 

Но он не работает (кнопка выглядеть на изображении выше). Вот часть моего XML-файла:

<LinearLayout 
    android:id="@+id/activity_dictionary_linearLayout2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_marginTop="5dp" > 

    <Button 
     android:id="@+id/activity_dictionary_button1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical|center_horizontal" 
     android:layout_weight="0.4" 
     android:enabled="false" 
     android:maxWidth="200dp" 
     android:text="Clear" 
     android:textColor="@android:color/white" /> 

    <ToggleButton 
     android:id="@+id/activity_dictionary_toggleButton1" 
     android:layout_width="20dp" 
     android:layout_height="20dp" 
     android:layout_gravity="center_vertical|center_horizontal" 
     android:layout_weight="0.2" 
     android:background="@drawable/settings" 
     android:text="ToggleButton" /> 

    <Button 
     android:id="@+id/activity_dictionary_button2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical|center_horizontal" 
     android:layout_weight="0.4" 
     android:enabled="false" 
     android:maxWidth="200dp" 
     android:text="Recognize" 
     android:textColor="@android:color/white" /> 

</LinearLayout> 

Что я должен изменить?

Обновление: android:layout_weight="0.2" удаляется, но кнопка все еще не меняет свой размер, когда я пытаюсь сделать это с помощью кода (он круглый, но очень маленький).

ответ

3

Вы должны переключить LinearLayout на RelativeLayout. Тогда ваши параметры размера должны вступить в силу.

+0

Но родительский макет - LinearLayout. Почему я должен переключить его на RelativeLayout? Он работает, но я не понимаю, почему ... – Marek

+0

Простите меня за то, что у меня нет технического ответа. LinearLayouts работают лучше всего, когда вы пытаетесь объединить все вместе, и хотите, чтобы они отображались на всех экранах одинакового отображения. Вы действительно хотели установить высоты и ширину, и для этого linearlayouts - это не лучшая вещь. Relativelayout не имеет этих параметров и фактически использует заданную высоту и ширину. Если вы хотите получить больше технических определений, я бы предложил посмотреть заметки разработчика http://developer.android.com/reference/android/widget/LinearLayout.html; –

+0

То, что меня смущает, это то, что я думал, что вы всегда должны использовать LayoutParameters of Parent. Для моей кнопки родительский LinearLayout. Почему редактор не показывает ошибку? – Marek

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