我在使用GridLayout时出现此问题,在两台三星设备上进行了测试。 这是布局的摘录:
<GridLayout
a:layout_width="0dp"
a:layout_weight="2"
a:layout_height="match_parent"
a:rowCount="5"
a:columnCount="4">
<TextView
a:id="@+id/tvDescentsFemaleCount"
style="@style/dataPanelControlLabels"
a:layout_width="0dp"
a:layout_row="0"
a:layout_column="0"
a:layout_columnWeight="3"
a:layout_columnSpan="3"
a:text="@string/pnlVisitDescentsFemaleDescentNumber" />
<Button
a:id="@+id/bDescentsFemaleCount"
style="@style/dataButton"
a:layout_width="0dp"
a:layout_row="1"
a:layout_column="0"
a:layout_columnWeight="3"
a:layout_columnSpan="3"
a:layout_marginLeft="3dp"
a:layout_marginRight="3dp" />
<ImageView
a:id="@+id/ivDescentsMoveLeft"
a:layout_width="0dp"
a:layout_row="1"
a:layout_column="3"
a:layout_columnWeight="1"
a:src="@drawable/freccia_indietro"
a:adjustViewBounds="true"
a:scaleType="centerInside" />
<TextView
a:id="@+id/tvDescentsMaleCount"
style="@style/dataPanelControlLabels"
a:layout_width="0dp"
a:layout_row="2"
a:layout_column="0"
a:layout_columnSpan="3"
a:layout_columnWeight="3"
a:text="@string/pnlVisitDescentsMaleDescentNumber" />
<Button
a:id="@+id/bDescentsMaleCount"
style="@style/dataButton"
a:layout_width="0dp"
a:layout_row="3"
a:layout_column="0"
a:layout_columnSpan="3"
a:layout_columnWeight="3"
a:layout_marginLeft="3dp"
a:layout_marginRight="3dp" />
<ImageView
a:id="@+id/ivDescentsMoveRight"
a:layout_width="0dp"
a:layout_row="3"
a:layout_column="3"
a:layout_columnWeight="1"
a:src="@drawable/freccia_avanti"
a:adjustViewBounds="true"
a:scaleType="centerInside" />
<ImageView
a:id="@+id/ivDescentsAdd"
a:layout_width="0dp"
a:layout_row="4"
a:layout_column="0"
a:layout_columnWeight="1"
a:layout_margin="3dp"
a:src="@drawable/add"
a:adjustViewBounds="true"
a:scaleType="centerInside"
a:padding="6dp" />
<ImageView
a:id="@+id/ivDescentsRemove"
a:layout_width="0dp"
a:layout_height="wrap_content"
a:layout_columnWeight="1"
a:layout_row="4"
a:layout_column="1"
a:layout_margin="3dp"
a:padding="6dp"
a:src="@drawable/meno"
a:adjustViewBounds="true"
a:scaleType="centerInside" />
<ToggleButton
a:id="@+id/tbDescentsFemaleSelect"
style="@style/toggleButtonPv"
a:layout_width="0dp"
a:layout_row="4"
a:layout_column="2"
a:layout_columnWeight="1"
a:layout_height="wrap_content"
a:layout_margin="3dp"
a:textOn="@string/pnlVisitDescentsFemaleShort"
a:textOff="@string/pnlVisitDescentsFemaleShort"
a:padding="4dp" />
<ToggleButton
a:id="@+id/tbDescentsMaleSelect"
style="@style/toggleButtonPv"
a:layout_width="0dp"
a:layout_row="4"
a:layout_column="3"
a:layout_columnWeight="1"
a:layout_height="wrap_content"
a:layout_margin="3dp"
a:textOn="@string/pnlVisitDescentsMaleShort"
a:textOff="@string/pnlVisitDescentsMaleShort"
a:padding="4dp" />
</GridLayout>
在完整的布局上有另一个GridLayout,唯一的区别是缺少a:layout_columnSpan属性(我已经将xmlns:android ...的经典命名空间声明缩短为xlmns:a ...)。 这是我的PC设计师不那么重要的截图:
这是来自SM-T535,API级别21三星平板电脑的屏幕截图: 在左上角有一个GridLayout,在中间右边有一个android.support.v7.widget.GridLayout。我只留下了布局限制,以显示小部件的呈现方式。
这是SM-T585,API级别24三星平板电脑的屏幕截图: GridLayout正确呈现,而右侧的android.support.v7.widget.GridLayout几乎以相同的方式呈现。
这是来自同一SM-T585的屏幕截图,其中所有两个小部件都是标准的GridLayout:
请注意右侧GridLayout下的开关库;它们是android.support.v7.widget.SwitchCompat,因为最初我是在GT-N800三星平板电脑上移植应用程序,标准的Switch小部件不是那么可定制的。在活动代码中,我用标准字体替换资产中的字体。只有在SM-T585上才能正确显示字体。 活动继承自Activity,但从AppCompatActivity继承不会更改单个像素。 整个项目是一个Xamarin应用程序(我正在移植为IOS开发的相同应用程序,所以我要回收大部分代码),IDE是VS2017社区版。 相同的布局(GridLayout小部件)在Nexus 7上正常工作,尽管屏幕太小。 任何建议表示赞赏。 感谢。
鲁道夫。