0

私はAndroidが初めてで、スクロールビューでリストビューを使用してアプリケーションを開発しています。私の要件によると、いくつかのビューを垂直スクロールで表示し、その下にリストビューを表示する必要があります。ビュー全体とリストビューを垂直にスクロールしたいのですが、リストビューは個別にスクロールする必要があります。解決策をグーグルで調べましたが、スクロールビューでリストビューを使用しないでください。

ListviewをDynamic LinearLayoutsに置き換えることで、これに代わる方法を試しましたが、これも機能していません。

ListItem に触れたときに ScrollView のフォーカスを無効にしようとしたり、その逆を行ったりしましたが、取得できませんでした。

以下のコードを試して、スクロール ビューのフォーカスを無効にしました。

mScrollView.setFocusableInTouchMode(true);
mScrollView.setFocusable(true);

mScrollView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);

mScrollView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        v.requestFocusFromTouch();
        return false;
    }
});

助けてください、事前に感謝します

4

3 に答える 3

2

ListViews は、スクロールビュー内で使用するためのものではありません。

あなたの参照のために:これを見てください

于 2012-04-18T12:06:33.763 に答える
0

他の人から知ったように..

ScrollView 内の ListView は機能しません。

解決のためのシェイクのために、

他のレイアウト部分を追加できます...あなたのviewsxmlを1つのxmlとlistview別のxmlに追加できます

次にlistView.setHeaderView(view);、ビュー レイアウトをそのヘッダーとして追加するために使用します。

コード例:

LinearLayout ll = (LinearLayout) findViewById(R.id.headerlayout); ListView lv = (ListView)findViewById(R.id.listview); lv.addHeaderView(ll);

これを参照するか、ヘッダー付きリストビューの例をインターネットで検索することもできます

于 2012-04-18T12:30:14.520 に答える
0

ScrollView 内に ListView をネストしないでください

そうする必要がある場合は、以下のコードを試してください。これは、一人の男が回答した StackOverflow からのものでもあります。

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);
}
}
于 2012-04-18T12:12:55.203 に答える