3

次のレイアウトに関する私の問題は、レイアウトがスクロールしないことです。私の要件は、時には大きくなる可能性のある 2 つのリストを表示する必要があるということです。したがって、両方の ListView を ScrollView 内に配置して、一番下までスクロールして両方の ListView を確認できるようにします。I don't want the ListView to scroll. ScrollView が本来の動作をするようにしたいだけです。助言がありますか??

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ScrollView
        android:id="@+id/scrollViewContactDetails"
        android:layout_width="match_parent"
        android:layout_height="fill_parent" android:fillViewport="true">


        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >


            <TextView
                android:id="@+id/name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textSize="22dp" />

            <LinearLayout
                android:id="@+id/numbersLayout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:orientation="vertical"
                android:weightSum="1" >

                <LinearLayout
                    android:id="@+id/numbersLayoutList"
                    android:layout_width="match_parent"
                    android:layout_height="fill_parent"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:weightSum="1" >

                    <ListView
                        android:id="@+id/numbersList"
                        android:layout_width="match_parent"
                        android:layout_height="fill_parent"
                        android:layout_gravity="center"
                        android:dividerHeight="2dp" >
                    </ListView>
                </LinearLayout>
            </LinearLayout>

            <LinearLayout
                android:id="@+id/emailLayout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_marginTop="10dp"
                android:orientation="horizontal"
                android:weightSum="1" >

                <LinearLayout
                    android:layout_width="120dp"
                    android:layout_height="match_parent"
                    android:layout_gravity="right|center"
                    android:gravity="top|right"
                    android:orientation="vertical" >

                    <TextView
                        android:id="@+id/emailId"
                        android:layout_width="120dp"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        android:gravity="right|center"
                        android:textAppearance="?android:attr/textAppearanceMedium"
                        android:textColor="#8d8d8d"
                        android:textSize="18dp" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/emailLayoutList"
                    android:layout_width="match_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="20dp"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:weightSum="1" >

                    <ListView
                        android:id="@+id/emailList"
                        android:layout_width="match_parent"
                        android:layout_height="fill_parent"
                        android:layout_gravity="center"
                        android:layout_weight="1"
                        android:dividerHeight="2dp" >
                    </ListView>
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>
4

6 に答える 6

17

これを達成する方法を見つけようと何日も費やしましたが、解決策が見つかりませんでした。You should not put a ListView inside a ScrollView私が検索したどこでも共通のことわざでした。ListView を使用して既に UI 全体を作成しており、それが私や他の全員にとって素晴らしく見えたので、LinearLayout や ViewGroup を使用したくなかったのです。ページがスクロールしないことを除けば、うまくいきました。

最近、ここで質問に出くわし、この回答を試してみることにしました。それは完璧に動作します!

解決策は次のとおりです。

public class Utility {
    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter(); 
        if (listAdapter == null) {
            // pre-condition
            return;
        }

        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
    }
}

Utility.setListViewHeightBasedOnChildren(yourListView)アダプターをリストビューに割り当てた後に呼び出すだけで完了です!

DougW答えを考えてくれてありがとう。元のリンクは次のとおりです。折りたたむことなくListViewをScrollViewに入れるにはどうすればよいですか?

于 2013-04-12T13:49:23.307 に答える
3

リストビューをスクロールビューに入れるべきではありません。それは良い考えではありません。スクロールしたくない場合は、リストビューを使用しないでください。LinearLayouts を試しましたか?

于 2013-02-05T08:06:22.313 に答える
1

2 つのリストビューを配置する代わりに、1 つのリストビューを使用して、そのリストビューのアダプターに両方のデータを追加するか、両方の xml ファイルを膨張させることができます。これにより、両方のデータが 1 つのリストビューに表示され、1 つのスクロール バーでデータがスクロールされます。

于 2013-02-05T08:14:35.180 に答える
0

この方法を試してください:

リストビューでは正しく機能しないため、レイアウトからスクロールビューを削除しました..

また、リストビューの高さ"android:layout_height="fill_parent"を設定して、親レイアウトの高さ全体を占めるようにします。

したがって、両方のリストビューの高さを手動で修正してください。

于 2013-02-05T08:13:46.137 に答える
0

追加するだけで解決策が見つかりました:

android:nestedScrollingEnabled="true"

リストビューへ:3

            <ListView
                android:id="@+id/ListViewPrzebiegTrasy"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:visibility="visible"
                android:scrollbars="vertical"
                android:nestedScrollingEnabled="true">
            </ListView>
于 2021-04-27T12:15:55.113 に答える