[Android] LinearLayout GridLayout做计算器

博客首页 » Android LinearLayout GridLayout做计算器

发布于 10 Jan 2016 10:57
标签 blog
试了试

使用GridLayout

使用GridLayout比较简单,但是有两个问题,首先是不能自动扩展到父对象,接着最后一个Cell如果使用Fill,那么会乱。

CalcGridLayout.jpg

据说到API 21会支持Weight,然后用v7兼容包可以解决。

Reference:
http://stackoverflow.com/questions/10016343/gridlayout-not-gridview-how-to-stretch-all-children-evenly
http://blog.csdn.net/pku_android/article/details/7343258

<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: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="net.sf.aut.gassist.MainActivity" >
 
    <GridLayout
        android:id="@+id/gridLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:columnCount="4"
        android:rowCount="5" >
 
        <Button
            android:id="@+id/button1"
            android:layout_rowWeight="1"
            android:text="C" />
 
        <Button
            android:id="@+id/button2"
            android:layout_rowWeight="1"
            android:text="-" />
 
        <Button
            android:id="@+id/button3"
            android:layout_rowWeight="1"
            android:text="*" />
 
        <Button
            android:id="@+id/button4"
            android:text="/" />
 
        <Button
            android:id="@+id/button5"
            android:text="1" />
 
        <Button
            android:id="@+id/button6"
            android:text="2" />
 
        <Button
            android:id="@+id/button7"
            android:text="3" />
 
        <Button
            android:id="@+id/button8"
            android:layout_gravity="fill_vertical"
            android:layout_rowSpan="2"
            android:text="+" />
 
        <Button
            android:id="@+id/button9"
            android:text="4" />
 
        <Button
            android:id="@+id/button10"
            android:text="5" />
 
        <Button
            android:id="@+id/button11"
            android:text="6" />
 
        <Button
            android:id="@+id/button12"
            android:layout_gravity="fill_horizontal"
            android:text="7" />
 
        <Button
            android:id="@+id/button13"
            android:layout_gravity="fill"
            android:text="8" />
 
        <Button
            android:id="@+id/button14"
            android:layout_gravity="fill_vertical"
            android:text="9" />
 
        <Button
            android:id="@+id/button15"
            android:layout_gravity="fill"
            android:layout_rowSpan="2"
            android:text="=" />
 
        <Button
            android:id="@+id/button16"
            android:layout_columnSpan="2"
            android:layout_gravity="fill_horizontal"
            android:text="0" />
 
        <Button
            android:id="@+id/button17"
            android:layout_gravity="left"
            android:text="." />
 
    </GridLayout>
 
</RelativeLayout>

使用LinearLayout

android:layout_weight比较奇怪,下面的这个Layout中数字"0",与"."的打小就奇怪。

想做成这样
tobe.jpg但是结果居然是这样
result.jpgLayout的结构是这样,纵向是一个LinearLayout,里面是多个横向的LinearLayout
structure.jpg

似乎android:layout_weight是根据android:width/height的fill_parent还是wrap_content决定含义。

源代码

<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: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="net.sf.aut.gassist.MainActivity" >
 
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical" >
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
 
            <EditText
                android:id="@+id/editText1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10" >
 
                <requestFocus />
            </EditText>
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
 
            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="mc" />
 
            <Button
                android:id="@+id/button2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="m+" />
 
            <Button
                android:id="@+id/button3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="m-" />
 
            <Button
                android:id="@+id/button4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="mr" />
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
 
            <Button
                android:id="@+id/button5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="C" />
 
            <Button
                android:id="@+id/button6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="+/-" />
 
            <Button
                android:id="@+id/button7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="/" />
 
            <Button
                android:id="@+id/button8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="*" />
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
 
            <Button
                android:id="@+id/button9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="7" />
 
            <Button
                android:id="@+id/button10"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="8" />
 
            <Button
                android:id="@+id/button11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="9" />
 
            <Button
                android:id="@+id/button12"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="-" />
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
 
            <Button
                android:id="@+id/button13"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="4" />
 
            <Button
                android:id="@+id/button14"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="5" />
 
            <Button
                android:id="@+id/button15"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="6" />
 
            <Button
                android:id="@+id/button16"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="+" />
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
 
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="3"
                android:orientation="vertical" >
 
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1" >
 
                    <Button
                        android:id="@+id/button17"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="1" />
 
                    <Button
                        android:id="@+id/button18"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="2" />
 
                    <Button
                        android:id="@+id/button19"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="3" />
 
                </LinearLayout>
 
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1" >
 
                    <Button
                        android:id="@+id/button21"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="10"
                        android:text="0" />
 
                    <Button
                        android:id="@+id/button23"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="." />
 
                </LinearLayout>
 
            </LinearLayout>
 
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:orientation="vertical" >
 
                <Button
                    android:id="@+id/button20"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:text="=" />
 
            </LinearLayout>
 
        </LinearLayout>
 
    </LinearLayout>
 
</RelativeLayout>

Reference:
http://www.tuicool.com/articles/3uUZbmu


本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用,仅有一个特殊要求,请用链接方式注明文章引用出处及作者。请协助维护作者合法权益。


系列文章

文章列表

  • Android LinearLayout GridLayout做计算器

这篇文章对你有帮助吗,投个票吧?

rating: 0+x

留下你的评论

Add a New Comment