在android上设置计算器按钮的布局

时间:2017-01-08 17:30:07

标签: android android-layout padding android-layout-weight

我刚开始学习Android。首先,我只想创建一个类似于我们得到的Android手机的计算器应用程序。我使用了以下布局:

  1. 纵向布局包含两行,它们是:
    • 将结果显示为水平布局的文本视图
    • 包含两列的水平布局:
      • 表格布局包含按钮0-9,'。'和' ='每行有3个按钮
      • 包含DEL,+, - ,x和/ button的表格布局。
  2. 我想要正确对齐第一个表格布局的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

4 个答案:

答案 0 :(得分:2)

我建议你可以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

答案 1 :(得分:1)

您可以设置按钮的高度,也可以添加填充。

BTW,身高D/DEBUG: midpoint lat 0.9242206929866051 midpoint long: 0.9242206929866051 的父母和身高wrap_content的孩子是合法的,我想,但有点奇怪。我会给孩子们一个固定的高度,或match_parent给他们一个足够的衬垫,以获得你想要的外观。

答案 2 :(得分: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>

答案 3 :(得分:1)

将自定义ViewGroup和自定义视图转换为子视图。你将拥有更多的灵活性和对性能的控制,也可以为你的利益而学习......

顺便说一句,创建自定义组件很简单。

由于