GridLayout在某些DPI上只显示一列

时间:2017-03-10 19:44:41

标签: android android-layout xamarin.android

所以我有一个GridLayout - 它正在使用权重来正确分配自己。问题是它在某些设备上无法正确显示 - 例如在Xperia E3(480 x 854,218 DPI)或设计器中的3.7“FWVGA滑块上。

以下是它应该如何:

Looking good!

以下是它在某些设备上的样子(只有GridLayout的第一列可见,它甚至超出了屏幕的右侧):

Not looking good

这是XML,基本上GridLayout包含按钮,这里的主要内容是每个按钮都有 android:layout_columnWeight="1" android:layout_rowWeight="1"

   
    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.3">
        ...
    </RelativeLayout>
<!--Bottom part (buttons)-->
    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_weight="0.7"
        android:orientation="vertical">
    <!--Scroll bar with all the different functions and constants-->
        <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:layout_marginBottom="5dp">
            <GridLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scrollbarAlwaysDrawHorizontalTrack="false">
                ...
            </GridLayout>
        </HorizontalScrollView>
    <!--THIS IS THE PROBLEM Main buttons for the calculator THIS IS THE PROBLEM-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.9">
            <GridLayout
                android:id="@+id/mainBtnGrid"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:rowCount="5"
                android:columnCount="5"
                android:orientation="vertical">
                <Button
                    android:id="@+id/btnClear"
                    android:background="@drawable/button_main"
                    style="@style/button_main_calculator"
                    android:text="C"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnSeven"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="7"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnFour"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="4"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1"/>
                <Button
                    android:id="@+id/btnOne"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="1"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnSign"
                    android:background="@drawable/button_main"
                    style="@style/button_main_calculator"
                    android:text="±"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnBack"
                    android:background="@drawable/button_main"
                    style="@style/button_main_calculator"
                    android:text="B"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnEight"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="8"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnFive"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="5"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnTwo"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="2"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnZero"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="0"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnTypingPositionSwitch"
                    android:background="@drawable/button_main"
                    style="@style/button_main_calculator"
                    android:text="M"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnNine"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="9"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnSix"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="6"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnThree"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="3"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnDecimal"
                    android:background="@drawable/button_main"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="."
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Space
                    android:layout_width="5dp" />
                <Space
                    android:layout_width="5dp" />
                <Space
                    android:layout_width="5dp" />
                <Space
                    android:layout_width="5dp" />
                <Space
                    android:layout_width="5dp" />
                <Button
                    android:id="@+id/btnDivide"
                    android:background="@drawable/button_operator"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="/"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnMultiply"
                    android:background="@drawable/button_operator"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="x"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnSubtract"
                    android:background="@drawable/button_operator"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="-"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnAdd"
                    android:background="@drawable/button_operator"
                    android:onClick="Button_OnClick"
                    style="@style/button_main_calculator"
                    android:text="+"
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
                <Button
                    android:id="@+id/btnEquals"
                    android:background="@drawable/button_operator"
                    style="@style/button_main_calculator"
                    android:text="="
                    android:layout_columnWeight="1"
                    android:layout_rowWeight="1" />
            </GridLayout>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

我不知道该怎么做,我的意思是,它不会经常发生!感谢您阅读本文,我将非常感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决这个问题的方法。我已经放弃了,我以编程方式完成了所有工作,但后来我再次开始使用xml。原来你只需要指定 android:layout_width="0dp" 对于每个按钮。然后它看起来应该是所有不同的屏幕分辨率和尺寸。

我怀疑这是因为在较小的屏幕上,即使在我指定之前,网格布局也会溢出

android:layout_columnWeight="1" android:layout_rowWeight="1"

因此它并不知道它应该伸展多远#34;

但是,现在当宽度设置为0dp时,它不会溢出任何地方,这就是为什么现在添加权重可以完美运行的原因。

我希望这可以帮助你们中的一些人 - 这是一个非常令人沮丧的问题!