LinearLayoutとRecyclerView(RelativeLayout内)を含むNestedScrollViewがあります。
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.v4.widget.NestedScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:id="@+id/scroll">
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:id="@+id/lay_account">
<LinearLayout
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@Android:color/white"
Android:paddingTop="10dp"
Android:id="@+id/lay_total"
Android:paddingBottom="10dp">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/total"
Android:id="@+id/lblTotal"
Android:textSize="@dimen/text_medium"
Android:layout_marginLeft="20dp"
Android:textColor="@color/dark_eurakostheme_color"
Android:textStyle="bold"/>
<LinearLayout
Android:orientation="horizontal"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:gravity="center_vertical|center_horizontal">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/txtTotalAmount"
Android:textSize="@dimen/text_extra_extra_large"
Android:gravity="center_horizontal"
Android:textColor="@color/eurakostheme_color"/>
<ImageView
Android:layout_width="@dimen/icon_extra_extra_large"
Android:layout_height="match_parent"
Android:id="@+id/imageView3"
Android:src="@drawable/coin_eurakos"/>
</LinearLayout>
</LinearLayout>
<View
Android:layout_width="fill_parent"
Android:layout_height="1dp"
Android:id="@+id/divisor"
Android:background="@color/dividerColor"
Android:layout_alignBottom="@+id/lay_total"/>
<Android.support.v7.widget.RecyclerView
Android:layout_below="@id/lay_total"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/rclBasketAmounts"
Android:background="@Android:color/white"
Android:padding="10dp">
</Android.support.v7.widget.RecyclerView>
</RelativeLayout>
</Android.support.v4.widget.NestedScrollView>
</Android.support.design.widget.CoordinatorLayout>
データをRecyclerViewに読み込んだ後、次のようにプログラムで高さを変更する必要があります。
RelativeLayout.LayoutParams lay_params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
50 + ((int) (baskets.length * getResources().getDimension(R.dimen.list_height_small))));
lay_params.addRule(RelativeLayout.BELOW, lay_total.getId());
recyclerView.setLayoutParams(lay_params);
recyclerView.setAdapter(new ListBasketAmountAdapter(baskets));
問題は、データがNestedScrollViewスクロールのロードを完了すると、RecyclerViewの上部に自動的にスクロールし、その上にLinearLayoutを非表示にすることです。何か案は?
ありがとう。
数日後、私は問題の解決策を見つけました。次のように、最初のレイアウトのdescendantFocusability
の下にScrollView
を追加する必要があります。
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:id="@+id/lay_account"
Android:descendantFocusability="blocksDescendants">
Kevings14が提供するソリューションは機能しますが、私の場合は役に立ちませんでした。私が追加したとき、RecyclerView
+ EditText
の下にいくつかのNestedScrollView
があります
Android:descendantFocusability="blocksDescendants"
スクロールビューの下のメインレイアウト。 EditText
にフォーカスできませんでした。
それから私はこの解決策を思いつきました。
<RelativeLayout
Android:layout_width="match_parent"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:layout_height="wrap_content">
私の場合、NestedScrollView内で複数のRecyclerViewを使用しています。それからそれは私のために働かない。私の解決策は、データの更新が完了したら、一番上までスクロールするだけです。
yourList.setAdapter(yourListAdapter);
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_UP);
//scrollView.scrollTo(0,0);
}
});