横向时 gridview 内的线性布局出现故障

Glitch with linear layout inside gridview when in landscape orientation

我在布局故障方面遇到困难。我有不同的纵向和横向布局。 问题只出现在横向布局上,即使两者的 xml 相同。

This image shows the problem

问题发生在 GridView 行内部。在行中,我有这些控件:
TextView1 ImageButton1 TextView2 Textview3 EditText ImageButton2 Imagebutton3

我正在使用布局权重让 TextView2、TextView3 和 EditText 控件占据剩余的 space。

纵向布局和横向布局的区别在于: 纵向布局是 4 个不同部分的垂直堆叠。风景是一分为二的,屏幕左侧有两个,右侧有两个。

这是 GridView 行的代码:

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

    <TextView
        android:id="@+id/gridfield_MemoryOrdinalPosition"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:text="1"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#ff6e807c"
        android:textStyle="bold"
        android:gravity="center_vertical"
        android:layout_marginRight="5dp"></TextView>

    <ImageButton
        android:id="@+id/btnGoMemoryPosition"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:background="@mipmap/go_arrow" />

        <TextView
            android:id="@+id/gridfield_MemoryLiftPosition"
            android:layout_weight="1"
            android:text="0.00"
            style="@style/MemoryLiftPositionStyle"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:minWidth="150dp"
            android:gravity="center_vertical|end" />

        <TextView
            android:id="@+id/gridfield_MemoryLiftPositionUnits"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:gravity="center_vertical|start"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="#ff2d2eff"
            android:text="in"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
        />

        <EditText
            android:id="@+id/gridfield_MemoryName"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="3"
            android:layout_marginEnd="@dimen/activity_horizontal_margin"
            android:background="@drawable/rect_text_edit"
            android:text="Named location"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@android:color/black"
            android:textCursorDrawable="@null"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp"/>


    <ImageButton
        android:id="@+id/btnSetMemoryPosition"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@mipmap/save"
        android:contentDescription="Save" />

    <ImageButton
        android:id="@+id/btnClearMemoryPosition"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@mipmap/trash"
        android:contentDescription="Delete" />

</LinearLayout>

activity_horizontal_margin 的值在横向模式下可能会有所不同。 默认情况下纵向为 16dp,横向为 64dp。