スクロールビューのリストビュースクロールビューがリストビューの一番上に移動します。これを防ぐにはどうすればよいですか?

アーバー:

スクロールビューのほぼ1ページ分のスクロールの下にリストビューがありますが、リストビューに値が設定されると、スクロールビューがリストビューの一番上に移動します。これをどのように修正/防止することができますか?

スクロールビューXML:

<ScrollView
    android:id="@+id/tvscrollview"
    android:layout_marginTop="8.0dip" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <include 
            layout="@layout/a" />

        <include 
            layout="@layout/b" />

        <include 
            layout="@layout/c" />

        <include 
            layout="@layout/d" />


<ListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

    </LinearLayout>
</ScrollView>

私はsv.fullScroll(ScrollView.FOCUS_UP);をやってみました 私のスクロールビューにそれらすべてのものがありますが、それは機能しません

nKn:

まず、おそらくあなたはすでにそれについて聞いてきましたが、念のために:あなたは入れてはいけませんListView内部のScrollViewように、ListViewそれ自体がすでに持っているScrollViewと、このデザインは、全体に反するListView考え方。それを使用する必要があると確信している場合は、おそらくより優れた使用方法があり、コードを何らかの方法で単純化する必要があるかもしれません。

さて、そのようなものを使用したい場合でも、次のようなものを使用できます。

package your.package.name;

import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;

public class ScrollingListView {
  public static void setListViewHeightBasedOnChildren(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter(); 
    if (listAdapter == null)
      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);
  }
}

アダプタを設定し.setAdapter()、その後で呼び出しますScrollingListView.setListViewHeightBasedOnChildren(your_listview)これにより、ListView高さに応じてウィンドウが再調整されます

----編集----

それはおそらく最も醜い回避策ですが、次のことを試してください:

ScrollView sv = (ScrollView) findViewById(R.id.your_scrollview);
sv.setEnabled(false);
// Populate your ListView
sv.setEnabled(true);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ