RecyclerView
があるので、スクロールバーが複数のページをカバーしているときにスクロールバーを表示したいと思います。
スクロールバーがまったく表示されません。何か案が?
私のレイアウト:
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >
<CheckBox
Android:id="@+id/cl_only_empty"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:elevation="5dp"
Android:text="@string/cl_only_empty"
Android:textColor="@color/white" />
<Android.support.v7.widget.RecyclerView
Android:id="@+id/callsList"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:scrollbars="vertical" />
</LinearLayout>
解決策は、xmlレイアウトで垂直(または水平)スクロールバーを設定することです。
<Android.support.v7.widget.RecyclerView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:scrollbars="vertical" />
Android:scrollbars属性の「vertical」およびAndroid:scrollbarThumbVertical属性を使用して色を設定し、Android:scrollbarSize属性を特定のサイズに設定します。
<Android.support.v7.widget.RecyclerView
Android:id="@+id/document_listview"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginBottom="3dp"
Android:layout_marginTop="3dp"
Android:scrollbars="vertical"
Android:scrollbarThumbVertical="@Android:color/darker_gray"
Android:scrollbarSize="5dp"
Android:background="@color/activity_bg"
Android:dividerHeight="4dp" />
xMLレイアウトで次のようにrecyclerViewを使用します
<Android.support.v7.widget.RecyclerView
Android:id="@+id/recyclerView"
Android:scrollbars="vertical"
Android:fadeScrollbars="true"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
javaのscrollviewのコードを以下に追加します。大丈夫です
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
recyclerView.setHasFixedSize(true);
古いHTC Desire X(api 16)のみで同じ問題が発生しました。
理由はわかりませんが、RecyclerView
のスコールバーは、Android:background
プロパティが設定されていません。任意の色または透明に設定してみてください-それは私のために働く、それもあなたに役立つことを願っています
これを試して:
mLayoutManager = new LinearLayoutManager (this);
mLayoutManager.setSmoothScrollbarEnabled (true);
Android:scrollbars属性に加えて、次のようにAndroid:fadeScrollbars属性をfalse状態で追加する必要があります。
<Android.support.v7.widget.RecyclerView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:scrollbars="vertical"
Android:fadeScrollbars="false"/>
このようにして、許可されるレイアウトの高さをより多く使用している場合、垂直スクロールバーが常に表示されます。
xml _Android:fadeScrollbars="false"
_を使用
JavaScrollView.setScrollbarFadingEnabled(false);
を使用
Scrollerは、複数の方法でrecyclerviewに設定できます。最初に、XMLにスクロールバーを追加し、そのプロパティをAndroid:fadeScrollbars = "false"に設定して常に表示することができます。
<Android.support.v7.widget.RecyclerView
Android:id="@+id/recyclerViewMachine"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:scrollbars="vertical"
Android:fadeScrollbars="false"
Android:scrollbarThumbVertical="@Android:color/darker_gray"
Android:scrollbarSize="5dp"
Android:scrollbarStyle="outsideOverlay"/>
または、recyclerviewを初期化するときにスタイルテーマを作成し、プログラムで使用できます。
<style name="ScrollbarRecyclerView" parent="Android:Widget">
<item name="Android:scrollbars">vertical</item>
</style>
RecyclerView recyclerView = new RecyclerView(new ContextThemeWrapper(context, R.style.ScrollbarRecyclerView));
ありがとう
プログラムでScrollBarを設定しても問題ない場合は、ContextThemeWrapper
を使用できます。まず、Style.xmlファイルでスタイルを定義する必要があります。
<style name="ScrollbarRecyclerView" parent="Android:Widget">
<item name="Android:scrollbars">vertical</item>
</style>
そして、RecylerViewを初期化するときにスタイリングを適用します。
RecyclerView recyclerView = new RecyclerView(new ContextThemeWrapper(context, R.style.ScrollbarRecyclerView));
コードをリサイクルビューXMLに追加して、スクロールバーを表示します。
<Android.support.v7.widget.RecyclerView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fadeScrollbars="false"
Android:scrollbars="vertical"
Android:scrollbarSize="@dimen/_2sdp"
Android:scrollbarThumbVertical="@color/white"/>
実際、それはテーマのためです。スクロールバーはありますが、親ビューまたはその祖先の行のその他のビューの色とブレンドされるため、表示できません。
描画可能なシェイプを作成し、希望する色を指定して、垂直または水平スクロールバーの描画可能として設定できます。つまり、テーマの色をいじりたくない場合です。