web-dev-qa-db-ja.com

水平スクロールと垂直スクロールの両方でRecyclerViewを作成します

過去数週間、私はRecyclerViewの使い方を学びました。横向きのリストを実装する必要があります。つまり、横向きモードでデバイスを回転させることにより、次のようにします。

enter image description here

私はこれのための最良の解決策を見つけました(RecyclerViewの水平方向の変位を作成する方法 here ))、別の問題が発生しました。アイテムRecyclerViewがデバイスの高さ(横、横)より大きいため、縦と横の変位を同時に作成する必要があります。

私はAndroid LayoutManagerクラスの開発者メソッドを調べましたが、ほとんどのメソッドを理解するのに十分なスキルがありません。また、RecyclerViewを別のRecyclerViewの中に垂直に配置し、すべてのコンテンツを水平に配置してみました、しかしエラーが出ます:

IllegalStateException:RecyclerViewにLayoutManagerがありません

これを改善するために、すべてを削除しました<View ... /> XMLファイルの要素ですが、これでは結果が得られません。

私が何を求めているのかを明確にするために、レイアウトを水平方向と垂直方向の両方にスクロールさせることは可能ですか?.

18
Vicky Vicent

最も簡単な解決策を考えていなかった、アプリケーションで発生する可能性があったすべての問題にとても腹を立てました。

RecyclerViewは、RecyclerViewが宣言されているメインのファイルとコンテンツが含まれている別の2つのXMLファイルで構成されています。

最も簡単な解決策は、RecyclerView内にScrollViewを導入することでした。したがって、ScrollViewのおかげですべてのアイテムを一度に垂直方向および水平方向に移動できます。ランドスケープモードではRecyclerViewのおかげでアイテムを移動できます。

activity_main.xml

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_margin="@dimen/cardIn_margin_ext">

        <Android.support.v7.widget.RecyclerView
            Android:id="@+id/recycler_view"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:scrollbarStyle="outsideInset"
            Android:scrollbars="horizontal" />

</ScrollView>
18
Vicky Vicent

受け入れられた答えは私にとってはうまくいきませんでした。単純なScrollViewの代わりにHorizo​​ntalScrollViewを使用する必要がありました。

<HorizontalScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
       Android:layout_width="match_parent"
       Android:layout_height="match_parent"
       Android:layout_margin="@dimen/cardIn_margin_ext">

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/recycler_view"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:scrollbarStyle="outsideInset"
        Android:scrollbars="horizontal" />
</HorizontalScrollView >