2017-01-08 4 views
1

Я только что начал изучать Android. Для начала я просто хотел создать приложение калькулятора, похожее на то, что мы получаем на Android-телефонах на складе. Я использовал следующие макеты:Настройка расположения кнопок калькулятора на android

  1. вертикальное расположение contining две строки, которые являются:
    • Просмотр текста для отображения результата в виде горизонтального расположения
    • Горизонтальное расположение с двумя колоннами:
      • Таблица макет, содержащий кнопки 0-9, '.' и '=' с 3 кнопками в каждой строке
      • Таблица, содержащая кнопки DEL, +, -, x и /.

Я хочу надлежащее выравнивание 4 строк первой таблицы и компоновки 5 строк второго макета таблицы. Должен ли я удалить прокладку? Или мне нужно вручную установить минимальный размер кнопок? Правильно ли установлены макеты?

`

<LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="112dp" 
      android:id="@+id/textView" /> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TableLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentTop="true"> 

      <TableRow android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

       <Button 
        android:text="7" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/button7" /> 

       <Button 
        android:text="8" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/button8" /> 

       <Button 
        android:text="9" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/button9" 
        android:elevation="0dp" /> 

      </TableRow> 

      <TableRow android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 

       <Button 
        android:text="4" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/button4" /> 

       <Button 
        android:text="5" 
        android:id="@+id/button5" 
        android:layout_height="match_parent" /> 

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

      </TableRow> 

      <TableRow android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 

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

       <Button 
        android:text="2" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/button2" /> 

       <Button 
        android:text="3" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/button3" /> 

      </TableRow> 

      <TableRow android:layout_height="wrap_content" 
       android:layout_width="match_parent"> 

       <Button 
        android:text="." 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/buttonDot" 
        android:minHeight="48dp" /> 

       <Button 
        android:text="0" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/button0" /> 

       <Button 
        android:text="=" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/buttonequals"/> 

      </TableRow> 
     </TableLayout> 

     <TableLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent"> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 

       <Button 
        android:text="DEL" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/buttonDelete" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 

       <Button 
        android:text="/" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/buttonDivide" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 

       <Button 
        android:text="x" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/buttonMultiply" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 

       <Button 
        android:text="+" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/buttonPlus" /> 

      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 

       <Button 
        android:text="-" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/buttonSubtract" /> 
      </TableRow> 
     </TableLayout> 

    </LinearLayout> 

</LinearLayout> 

`

Current Layout

Required layout

+0

проверить мой ответ –

ответ

1

Ниже кода может сделать работу я предполагаю,

<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" 
     xmlns:andriod="http://schemas.android.com/apk/res-auto" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:orientation="horizontal" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     tools:context=".MainActivity"> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:id="@+id/resultview" 
      android:layout_height="wrap_content"> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="120dp" 
       android:id="@+id/textView" /> 
     </LinearLayout> 
     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_below="@+id/resultview" 
      android:layout_alignParentBottom="true" 
      android:layout_height="wrap_content"> 

      <TableLayout 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_alignParentTop="false" 
       android:layout_alignParentBottom="true" 
       android:background="#000000"> 



       <TableRow android:layout_width="match_parent" 
        android:minHeight="100dp" 
        android:orientation="vertical" 
        android:id="@+id/row1" 
        android:background="#000000"> 
        <Button 
         android:text="7" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/button7" /> 
        <Button 
         android:text="8" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:id="@+id/button8" /> 

        <Button 
         android:text="9" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/button9" 
         android:elevation="0dp" /> 

       </TableRow> 
       <TableRow android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:id="@+id/row2" 
        android:minHeight="100dp" 
        android:layout_below="@+id/row1"> 

        <Button 
         android:text="4" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/button4" /> 

        <Button 
         android:text="5" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:id="@+id/button5" 
         android:layout_height="match_parent" /> 

        <Button 
         android:text="6" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/button6" /> 

       </TableRow> 

       <TableRow android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:minHeight="100dp"> 

        <Button 
         android:text="1" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/button1" /> 

        <Button 
         android:text="2" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/button2" /> 

        <Button 
         android:text="3" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/button3" /> 

       </TableRow> 

       <TableRow android:layout_height="wrap_content" 
        android:layout_width="match_parent" 
        android:background="#000000"> 

        <Button 
         android:text="." 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/buttonDot" 
         android:minHeight="48dp" /> 

        <Button 
         android:text="0" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/button0" /> 

        <Button 
         android:text="=" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/buttonequals"/> 

       </TableRow> 
      </TableLayout> 

      <TableLayout 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:background="#000000"> 

       <TableRow 
        android:layout_width="match_parent" 
        android:layout_height="10dp" 
        android:minHeight="80dp"> 

        <Button 
         android:text="DEL" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/buttonDelete" /> 

       </TableRow> 

       <TableRow 
        android:layout_width="match_parent" 
        android:layout_height="10dp" 
        android:minHeight="80dp"> 

        <Button 
         android:text="/" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/buttonDivide" /> 
       </TableRow> 

       <TableRow 
        android:layout_width="match_parent" 
        android:layout_height="10dp" 
        android:minHeight="80dp"> 

        <Button 
         android:text="x" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/buttonMultiply" /> 
       </TableRow> 

       <TableRow 
        android:layout_width="match_parent" 
        android:layout_height="10dp" 
        android:minHeight="60dp"> 

        <Button 
         android:text="+" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/buttonPlus" /> 

       </TableRow> 

       <TableRow 
        android:layout_width="match_parent" 
        android:layout_height="10dp" > 

        <Button 
         android:text="-" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:background="#000000" 
         android:textColor="#ffffff" 
         android:id="@+id/buttonSubtract" /> 
       </TableRow> 
      </TableLayout> 
     </LinearLayout> 
    </RelativeLayout> 
1

Вы можете либо установить высоту кнопок, или добавить отступы.

BTW, родитель с высотой wrap_content и детьми с высотой match_parent является законным, я полагаю, но немного странным. Я бы дал детям либо фиксированную высоту, либо wrap_content с достаточным отступом, чтобы получить тот внешний вид, который вы хотите.

+0

Спасибо @GreyBeardedGeek. Обеспечение фиксированной высоты для детей работает. Будет ли он работать на каждом размере экрана? – Rubik

1

Я полагаю, что вы можете использовать GridLayout для этой точки зрения

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:columnCount="4" 
    android:orientation="horizontal" > 
</GridLayout> 

https://code.tutsplus.com/tutorials/android-user-interface-design-creating-a-numeric-keypad-with-gridlayout--mobile-8677

http://sampleprogramz.com/android/gridlayout.php

+0

Если мы используем GridLayout, символы (справа всего с 5 строками) столбец на дисплее не совпадают с числами, имеющими 4 строки, желаемый макет [Требуемый макет] (https://i.stack.imgur.com/Sennl. png) не может быть получена. Пожалуйста, помогите, что делать? – Anil

+0

вы можете создать отдельный макет для (самое большее с 5 рядами) –

1

Перейти к Настраиваемый ViewGroup и пользовательские представления как дочерние. У вас будет гораздо больше гибкости и контроль над производительностью, также выучитесь для вашего успеха.

Btw, Создание пользовательских компонентов легко.

Благодаря

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