0

Hierarch Viewerツールの使用方法を学んでいますが、その間、以下のレイアウトが正しくレンダリングされない理由についてのヒントをいただければ幸いです。

「html」テーブルビューをレンダリングしようとしています。コンテンツ(テーブル本体)は、カスタムリストアダプタを使用して正しくレンダリングされます。これは機能します。しかし、ヘッダーとして使用するtextView(以下のtext_test)を追加すると、リストは表示されなくなります。アダプタ(ビューホルダーにデータを入力するなど)を介したコードフローを確認できましたが、画面にはタイトルテキストのみが表示され、listViewは表示されません。以前は(コメントに記載されているように)FrameLayoutを使用していましたが、その後、LinearLayoutに切り替えました。

ありがとう。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.my_list_view, container,
                false);
        ListView lv = (ListView)view.findViewById(R.id.my_list_view_one);
        // Tell the list view which view to display when the list is empty
        //lv.setEmptyView(getActivity().findViewById(R.id.my_list_view_empty));

        // Set up the adapter
        mCustomAdapter = new ListAdapterMyType(inflater, new ArrayList<MyType>());
        lv.setAdapter(mCustomAdapter);
        return  view;
    }

my_list_view.xml

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <!-- The frame layout is here since we will be showing either
the empty view or the list view.  -->
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_weight="1">

        <TextView
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:text="@string/text_test"/>

        <ListView
                android:id="@+id/my_list_view_one"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:drawSelectorOnTop="false"/>

        <!-- Here is the view to show if the list is emtpy -->
        <TextView android:id="@+id/my_list_view_empty"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:text="@string/list_no_items"
                  android:visibility="gone"/>

    </LinearLayout>
    </LinearLayout>
4

1 に答える 1

1

しかし、ヘッダーとして使用するtextView(以下のtext_test)を追加すると、リストは表示されなくなります。

TextViewはmatch_parent幅と高さの両方に設定されているため、画面全体に表示されます... TextViewをListViewの上に配置するには、次の手順を実行してください。

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:orientation="vertical">

    <TextView
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="@string/text_test"/>

    <ListView
            android:id="@+id/my_list_view_one"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:drawSelectorOnTop="false"/>

    <!-- Here is the view to show if the list is emtpy -->
    <TextView android:id="@+id/my_list_view_empty"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:text="@string/list_no_items"
              android:visibility="gone"/>

</LinearLayout>

外側のLinearLayoutは、子が1つしかないため、何もしませんでした。また、残りのLinearLayoutの方向をに変更しvertical、ヘッダーのTextViewの高さをに設定しましたwrap_content

カスタムヘッダーをListViewと一緒にスクロールする場合は、レイアウト内の個別のTextViewの代わりに、 (呼び出す前にaddHeaderView())メソッドを使用します。このアプローチでは、ListViewが空の場合にもヘッダーが非表示になります。setAdapter()

于 2013-02-01T18:02:20.493 に答える