2017-01-24 5 views
0

Я начинаю писать свое первое приложение для Android, и я добавляю несколько кнопок.Android-кнопки для соответствия на экране независимо от того, какое устройство

Я хочу кнопку баннера сверху и снизу, которой я управлял, а затем 4 кнопки в середине равного размера, заполняя оставшееся пространство.

Есть ли способ сделать это без проб и ошибок размера и так, чтобы он работал на любом устройстве?

Current App Layout

Вот мой код -

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 


    <Button 
     android:id="@+id/button1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 

    <Button 
     android:text="Button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:id="@+id/button5" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="650px" 
     android:layout_height="1000px" 
     android:layout_above="@+id/button5" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <Button 
     android:text="Button" 
     android:layout_width="650px" 
     android:layout_height="1000px" 
     android:layout_below="@+id/button1" 
     android:layout_alignRight="@+id/button2" 
     android:layout_alignEnd="@+id/button2" 
     android:id="@+id/button6" /> 

    <Button 
     android:text="Button" 
     android:layout_width="650px" 
     android:layout_height="1000px" 
     android:layout_alignBottom="@+id/button6" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:id="@+id/button7" /> 

    <Button 
     android:text="Button" 
     android:layout_width="650px" 
     android:layout_height="1000px" 
     android:layout_alignTop="@+id/button2" 
     android:layout_alignLeft="@+id/button7" 
     android:layout_alignStart="@+id/button7" 
     android:id="@+id/button8" /> 

    </RelativeLayout> 
+0

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

+0

Привет, извините, я имею в виду прямоугольники. Хорошо знать! Эмулятор убивает мой ноутбук. – benjano

+0

RelativeLayout не должен быть тем, что вы хотите. LinearLayout для родителя, вертикальные 3 строки, добавьте вес к этим строкам для калибровки, тогда средняя строка представляет собой GridLayout из 4 кнопок –

ответ

1

без использования каких-либо библиотек вы можете добиться этого. Пространство между верхней и Buttom кнопками будет расщепляются в равной степени 4 (Он не будет квадратами всегда в зависимости от размера экрана)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Button 1"/> 

    <Button 
     android:id="@+id/button6" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Button 6" 
     android:layout_alignParentBottom="true"/> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/button1" 
     android:orientation="vertical" 
     android:layout_above="@id/button6"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1"> 

      <Button 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_weight="1" 
       android:text="Button 2"/> 

      <Button 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_weight="1" 
       android:text="Button 3"/> 

     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1"> 

      <Button 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_weight="1" 
       android:text="Button 4"/> 

      <Button 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_weight="1" 
       android:text="Button 5"/> 

     </LinearLayout> 

    </LinearLayout> 

</RelativeLayout> 
+0

Привет, Это работает отлично. Если я хочу сделать кнопки верхнего и нижнего баннера немного большими, что мне нужно изменить? – benjano

+0

@benjano просто меняет атрибут height на некоторый dp, заменяя wrap_content. – sJy

1

Вот пример, который не имеет вложенные layout_weight атрибуты:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <Button 
     android:id="@+id/top_button" 
     android:layout_width="match_parent" 
     android:layout_height="40dp" /> 

    <Button 
     android:id="@+id/bottom_button" 
     android:layout_width="match_parent" 
     android:layout_height="40dp" 
     android:layout_alignParentBottom="true"/> 

    <GridLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/top_button" 
     android:layout_above="@id/bottom_button" 
     android:useDefaultMargins="true" 
     android:columnCount="2"> 
     <Button 
      android:layout_columnWeight="1" 
      android:layout_rowWeight="1"/> 
     <Button 
      android:layout_columnWeight="1" 
      android:layout_rowWeight="1"/> 
     <Button 
      android:layout_columnWeight="1" 
      android:layout_rowWeight="1"/> 
     <Button 
      android:layout_columnWeight="1" 
      android:layout_rowWeight="1"/> 
    </GridLayout> 
</RelativeLayout>