1

私の DialogFragments の 1 つは、同じサイズの 2 つの GridView を実装しており、一方が他方の上に積み重ねられています。理想的には、私のレイアウトは次のようになります (Android Studio で見られるように): Android Studio に表示されるレイアウト

残念ながら、実際の Android デバイスにレイアウトをロードすると、次のようになります。 Androidでも同じレイアウト

Kanji GridView が空の場合、完全に非表示になります。さらに、その高さは、表示する必要がある要素の数によって異なります。空の場合でも、Android Studio に表示されるレイアウトに従って、一番下の GridView を強制的に高さの 50% にするにはどうすればよいですか?

この特定のレイアウトの XML は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/kanji_lookup_root"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:focusableInTouchMode="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ProgressBar
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:id="@+id/progress_bar"
            android:layout_toStartOf="@+id/search_box_kanji"
            android:visibility="gone"
            android:indeterminate="true"
            android:layout_centerVertical="true"/>

        <SearchView
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:id="@id/search_box_kanji"
            android:queryHint="@string/menu_search_hint"
            android:iconifiedByDefault="false"
            android:layout_centerHorizontal="true"/>

    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            style="@style/EntryDetailsHeader"
            android:text="@string/components" />

        <com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView
            android:id="@+id/grid_components"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:numColumns="9"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            style="@style/EntryDetailsHeader"
            android:text="@string/kanji" />

        <GridView
            android:id="@+id/grid_kanji"
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:numColumns="9"/>

    </LinearLayout>

</LinearLayout>

(ちなみに、上のComponents GridViewにはStickyGridHeadersライブラリを使用しています)

4

2 に答える 2

0

2 つの LinearLayouts の「0dp」layout_height を「match_parent」に変更します。

于 2013-10-10T16:25:31.920 に答える
0

weightSum最も外側の属性がありませんLinearLayout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/kanji_lookup_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusableInTouchMode="true"
    android:orientation="vertical"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:weightSum="2" > <!-- This line is what you were missing -->
    ...
</LinearLayout>

これをデバイスで動作するようにテストしました ( EntryDetailsHeader スタイルがmatch_parent幅とwrap_content高さを設定すると仮定します)。

于 2013-10-10T20:42:56.403 に答える