2016-01-05 32 views
2

我试图与网格布局网格布局会出界

enter image description here

重现这个计算器的布局,但是这是我与我试过的代码。

enter image description here

事实上,它变得更加恶劣的设备上,它削减甚至较上年等于按钮必须在两行跨越。

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#000000" 
    android:columnCount="5" 
    android:rowCount="2" 
    android:orientation="horizontal" 
    android:padding="5dp"> 

    <Button 
     android:layout_columnSpan="1" 
     android:layout_rowSpan="1" 
     android:text="1" /> 

    <Button 
     android:layout_columnSpan="1" 
     android:layout_rowSpan="1" 
     android:text="2" /> 

    <Button 
     android:layout_columnSpan="1" 
     android:layout_rowSpan="1" 
     android:text="3" /> 

    <Button 
     android:layout_columnSpan="1" 
     android:layout_rowSpan="1" 
     android:text="-" /> 

    <Button 
     android:layout_columnSpan="1" 
     android:layout_rowSpan="2" 
     android:layout_gravity="fill_vertical" 
     android:text="=" /> 


    <Button 
     android:layout_columnSpan="2" 
     android:layout_rowSpan="1" 
     android:layout_gravity="fill_horizontal" 
     android:text="0" /> 

    <Button 
     android:layout_columnSpan="1" 
     android:layout_rowSpan="1" 
     android:text="." /> 

    <Button 
     android:layout_columnSpan="1" 
     android:layout_rowSpan="1" 
     android:text="+" /> 

    <Space 
     android:layout_columnSpan="1" 
     android:layout_rowSpan="1" 
     android:text="-" /> 

    <Space 
     android:layout_columnSpan="1" 
     android:layout_rowSpan="1" 
     android:text="=" /> 

</GridLayout> 

但是,它一直走出界限。我试图根据这个线索更改为“android.support.v7.widget.GridLayout”:

GridLayout column is going beyond its bounds

,但并没有太大帮助。

任何线索如何使其与手机尺寸精确匹配?

回答

5

将视图更改为android.support.v7.widget.GridLayout。还可以将app:layout_columnWeight添加到每个视图,并将layout_width设置为0dp。 空间视图是不需要的。

(测试用Genymotion/VM的Nexus的Android 5.0和Nexus 9采用Android 6.0.1)

这是最终的结果:

<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#fff" 
    app:columnCount="5" 
    app:rowCount="2" 
    app:orientation="horizontal" 
    android:padding="5dp"> 

    <Button 
     app:layout_columnWeight="1" 
     android:layout_width="0dp" 
     app:layout_columnSpan="1" 
     app:layout_rowSpan="1" 
     android:text="1" /> 

    <Button 
     app:layout_columnWeight="1" 
     android:layout_width="0dp" 
     app:layout_columnSpan="1" 
     app:layout_rowSpan="1" 
     android:text="2" /> 

    <Button 
     app:layout_columnWeight="1" 
     android:layout_width="0dp" 
     app:layout_columnSpan="1" 
     app:layout_rowSpan="1" 
     android:text="3" /> 

    <Button 
     app:layout_columnWeight="1" 
     android:layout_width="0dp" 
     app:layout_columnSpan="1" 
     app:layout_rowSpan="1" 
     android:text="-" /> 

    <Button 
     app:layout_columnWeight="1" 
     android:layout_width="0dp" 
     app:layout_columnSpan="1" 
     app:layout_rowSpan="2" 
     app:layout_gravity="fill_vertical" 
     android:text="=" /> 


    <Button 
     app:layout_columnWeight="1" 
     android:layout_width="0dp" 
     app:layout_columnSpan="2" 
     app:layout_rowSpan="1" 
     app:layout_gravity="fill_horizontal" 
     android:text="0" /> 

    <Button 
     app:layout_columnWeight="1" 
     android:layout_width="0dp" 
     app:layout_columnSpan="1" 
     app:layout_rowSpan="1" 
     android:text="." /> 

    <Button 
     app:layout_columnWeight="1" 
     android:layout_width="0dp" 
     app:layout_columnSpan="1" 
     app:layout_rowSpan="1" 
     android:text="+" /> 

</android.support.v7.widget.GridLayout> 
+0

你赢了!感谢这个答案! – marienke