Android多个按钮对齐

时间:2014-02-03 18:42:02

标签: android android-layout button alignment android-studio

我正在测试Android Studio,我正在尝试编写一个简单的计算器来测试它并学习Android

我想要达到的目标是:

Calc example

我希望每个设备都有这种行为,无论是肖像还是风景。

我的目的是让所有相对于字符串“Result is 0:”的东西,所以这样的东西:

<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"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="org.mennini.mycalc.MainActivity$PlaceholderFragment">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Sum is: 0"
    android:id="@+id/textView"
    android:onClick="onButtonClick"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="8"
    android:id="@+id/button"
    android:layout_marginTop="40dp"
    android:layout_below="@+id/textView"
    android:layout_centerHorizontal="true"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="7"
    android:id="@+id/button2"
    android:layout_alignTop="@+id/button"
    android:layout_toLeftOf="@+id/button"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="9"
    android:id="@+id/button3"
    android:layout_alignTop="@+id/button"
    android:layout_toRightOf="@+id/button"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="5"
    android:id="@+id/button4"
    android:layout_below="@+id/button"
    android:layout_toRightOf="@+id/button2"
    android:layout_marginTop="19dp"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="4"
    android:id="@+id/button5"
    android:layout_alignTop="@+id/button4"
    android:layout_toLeftOf="@+id/button4"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="6"
    android:id="@+id/button6"
    android:layout_alignTop="@+id/button4"
    android:layout_toRightOf="@+id/button4"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="2"
    android:id="@+id/button7"
    android:layout_below="@+id/button4"
    android:layout_toRightOf="@+id/button5"
    android:layout_marginTop="19dp"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="1"
    android:id="@+id/button8"
    android:layout_alignTop="@+id/button7"
    android:layout_toLeftOf="@+id/button7"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="3"
    android:id="@+id/button9"
    android:layout_alignTop="@+id/button7"
    android:layout_toRightOf="@+id/button7"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="0"
    android:id="@+id/button10"
    android:layout_below="@+id/button7"
    android:layout_alignLeft="@+id/button8"
    android:layout_alignStart="@+id/button8"
    android:layout_marginTop="19dp"
    android:layout_toLeftOf="@+id/button9"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="."
    android:id="@+id/button11"
    android:layout_alignTop="@+id/button10"
    android:layout_toRightOf="@+id/button10"
    android:onClick="onButtonClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="C"
    android:id="@+id/button12"
    android:layout_below="@+id/button10"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="30dp"
    android:onClick="onButtonClick" />

关闭列数很容易,但是如何处理偶数,例如示例?

更多,使用Android Studio我尝试使用表格布局和网格布局,但我还没有理解如何设置具有特定行数和列数的网格,即5行x 4列网格,即我可以拖动一个GridLayout并设置行数和列数,但是当我拖动一些控件时,比如一个Button,我看到绿色网格下面有比预期更多的单元格,所以我打算在我的5x4网格上绘制按钮让网格本身水平居中会让人感到沮丧。

最后(感谢您在这里阅读)问题:我该如何处理这种情况?我的想法是使用相对于textview的所有按钮是好还是傻? 我的想法是使用GridLayout一个好的或愚蠢的想法吗?

我可以用哪种聪明的方式处理这个问题????

非常感谢

3 个答案:

答案 0 :(得分:0)

你有没有想过使用TableLayout

答案 1 :(得分:0)

您可以考虑前三列的垂直方向的线性布局(每行添加到具有水平方向的单独线性布局,这意味着您需要四个线性布局,然后全部添加到第一个布局,其中线性布局具有垂直方向),然后将第一个线性布局和最后一列(首先添加到另一个垂直布局)添加到另一个水平方向的线性布局!

在这里你也可以找到很好的例子: http://mrbool.com/how-to-create-a-calculator-app-for-android/28100

此处还有完整的xml代码:

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

    <LinearLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

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

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

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

      </LinearLayout>




         <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id = "@+id/seven"
            android:text="7"
        />

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

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

      </LinearLayout>

          <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id = "@+id/four"
            android:text="4"
        />

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

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

      </LinearLayout>

        <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id = "@+id/one"
            android:text="1"
        />

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

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

      </LinearLayout>


        <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id = "@+id/one"
            android:text="1"
        />

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

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

      </LinearLayout>

        <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id = "@+id/zero"
            android:layout_weight="2"
            android:text="0"
        />

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

      </LinearLayout>

   </LinearLayout>
     <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id = "@+id/slash"

            android:text="/"
        />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id = "@+id/enter"
            android:layout_weight="2"
            android:text="Enter"
        />

      </LinearLayout>


</LinearLayout>

问候@ Sandman42,

答案 2 :(得分:0)

<LinearLayout 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" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".Home" android:background="#fff" > <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/disp" android:id = "@+id/display" android:hint="@string/dispHint" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:paddingTop="20dp"> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/seven" android:text="@string/seven" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/eight" android:text="@string/eight" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/nine" android:text="@string/nine" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/div" android:text="@string/div" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:paddingTop="20dp"> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/four" android:text="@string/four" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/five" android:text="@string/five" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/six" android:text="@string/six" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/mul" android:text="@string/mul" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:paddingTop="20dp"> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/one" android:text="@string/one" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/two" android:text="@string/two" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/three" android:text="@string/three" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/sub" android:text="@string/sub" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:paddingTop="20dp"> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/cancel" android:text="@string/cancel" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/zero" android:text="@string/zero" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/equal" android:text="@string/equal" /> <Button android:layout_width="55dp" android:layout_height="wrap_content" android:id = "@+id/add" android:text="@string/add" /> </LinearLayout> </LinearLayout>