web-dev-qa-db-ja.com

Android水平RecyclerViewスクロール方向

Horizo​​ntal RecyclerViewを作成し、正常に動作します( this のおかげです)が、スクロールとデータの方向は左から右に拡張されます。次に、下の写真のようにRecyclerViewのスクロール方向を変更するにはどうすればよいですか?

enter image description here

私のコード:

StaggeredGridLayoutManager staggeredGridLayoutManager =
                new StaggeredGridLayoutManager(
                        2, //The number of Columns in the grid
                        LinearLayoutManager.HORIZONTAL);
38
Hamid Goodarzi

ご使用のRecyclerViewでLinearLayoutManagerを使用すると仮定すると、 LinearLayoutManager コンストラクターの3番目の引数としてtrueを渡すことができます。

例えば:

mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true));

StaggeredGridLayoutManagerを使用している場合は、それが提供するsetReverseLayoutメソッドを使用できます。

102
gmetal

Xmlだけでできます。

app:reverseLayout = "true"が仕事をします!

<Android.support.v7.widget.RecyclerView
                        Android:layout_width="match_parent"
                        Android:layout_height="wrap_content"
                        Android:divider="@null"
                        Android:orientation="horizontal"
                        app:reverseLayout="true"
                        app:layoutManager="Android.support.v7.widget.LinearLayoutManager" />
28
Lucas Paolillo

Imageviewとtextviewを備えた水平RecyclerView

xmlファイル

main.xml

<LinearLayout
   Android:layout_width="match_parent"
   Android:layout_height="wrap_content"
   Android:layout_marginTop="5dp"
   Android:orientation="vertical"
   Android:background="#070e94">
<View
    Android:background="#787878"
    Android:layout_width="match_parent"
    Android:layout_height="1dp"
    />
<Android.support.v7.widget.RecyclerView
    Android:id="@+id/wallet"
    Android:background="#070e94"
    Android:layout_width="match_parent"
    Android:layout_height="100dp"/>

item.xml

<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="100dp"
Android:layout_height="match_parent"
Android:layout_marginTop="5dp">
<ImageView
    Android:id="@+id/image"
    Android:layout_width="50dp"
    Android:layout_height="50dp"
    Android:scaleType="fitXY"
    Android:src="@drawable/bus"
    Android:layout_gravity="center"/>
<TextView
    Android:textColor="#000"
    Android:textSize="12sp"
    Android:layout_gravity="center"
    Android:padding="5dp"
    Android:id="@+id/txtView"
    Android:textAlignment="center"
    Android:hint="Electronics"
    Android:layout_width="80dp"
    Android:layout_height="wrap_content" />

Javaクラス

ActivityMaim.Java

public class MainActivity extends AppCompatActivity{
private  RecyclerView  horizontal_recycler_view;
private ArrayList<Arraylist> horizontalList;
private CustomAdapter horizontalAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    horizontal_recycler_view= (RecyclerView) findViewById(R.id.horizontal_recycler_view);
    horizontalList = new ArrayList<Arraylist>();
    for (int i = 0; i < MyData.nameArray.length; i++) {
        horizontalList.add(new Arraylist(
                MyData.nameArray[i],
                MyData.drawableArray[i]
        ));
    }
    horizontalAdapter=new CustomAdapter(horizontalList);
    LinearLayoutManager horizontalLayoutManagaer
            = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false);
    horizontal_recycler_view.setLayoutManager(horizontalLayoutManagaer);
    horizontal_recycler_view.setAdapter(horizontalAdapter);
}}

Adaperクラス

CustomAdapter.Java

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {

private ArrayList<Arraylist> dataSet;

public static class MyViewHolder extends RecyclerView.ViewHolder {

    TextView textViewName;

    ImageView imageViewIcon;

    public MyViewHolder(View itemView) {
        super(itemView);
        this.textViewName = (TextView) itemView.findViewById(R.id.txtView);
        //this.textViewVersion = (TextView) itemView.findViewById(R.id.textViewVersion);
        this.imageViewIcon = (ImageView) itemView.findViewById(R.id.image);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                if (getPosition()==0)
                {
                    Toast.makeText(v.getContext(), " On CLick one", Toast.LENGTH_SHORT).show();

                } if (getPosition()==1)
                {
                    Toast.makeText(v.getContext(), " On CLick Two", Toast.LENGTH_SHORT).show();

                } if (getPosition()==2)
                {
                    Toast.makeText(v.getContext(), " On CLick Three", Toast.LENGTH_SHORT).show();

                } if (getPosition()==3)
                {
                    Toast.makeText(v.getContext(), " On CLick Fore", Toast.LENGTH_SHORT).show();

                }

            }
        });
    }
}

public CustomAdapter(ArrayList<Arraylist> data) {
    this.dataSet = data;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,
                                       int viewType) {
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.card_view, parent, false);

    //view.setOnClickListener(MainActivity.myOnClickListener);

    MyViewHolder myViewHolder = new MyViewHolder(view);
    return myViewHolder;
}

@Override
public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {

    TextView textViewName = holder.textViewName;
   // TextView textViewVersion = holder.textViewVersion;
    ImageView imageView = holder.imageViewIcon;

    textViewName.setText(dataSet.get(listPosition).getName());
    //textViewVersion.setText(dataSet.get(listPosition).getVersion());
    imageView.setImageResource(dataSet.get(listPosition).getImage());
}

@Override
public int getItemCount() {
    return dataSet.size();
}}

Arraylist.Java

public class Arraylist{
String name;
int image;

public Arraylist(String name, int image) {
    this.name = name;
    this.image=image;
}
public String getName() {
    return name;
}
public int getImage() {
    return image;
}}

MyData.Java

public class MyData {
static String[] nameArray = {"Gas", "Insurance", "Electronics", "Other Services"};
static Integer[] drawableArray = {R.drawable.gas_gas, R.drawable.insurance, R.drawable.electric, R.drawable.services};}
3
Anita Kunjir

Androidxを使用したXMLアプローチ:

<androidx.recyclerview.widget.RecyclerView
        Android:layout_width="match_parent"
        Android:id="@+id/my_recycler_view"
        Android:orientation="horizontal"
        tools:listitem="@layout/my_item"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" 
        Android:layout_height="wrap_content">
2
Raja Raghav

2行のコードを追加するだけで、recyclerviewの向きが水平になります。したがって、Recyclerviewを初期化するときにこれらの行を追加します。

  LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);

my_recycler.setLayoutManager(linearLayoutManager);
1
Pradeep Sheoran

次のコードで十分です

RecyclerView recyclerView;
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,true);

 recyclerView.setLayoutManager(layoutManager);
1
Tousif Akram

ごみ箱レイアウトマネージャーでは、2番目のパラメーターはspanCountです。スパンカウントの増減は、画面に表示される要素の数を変更します

    RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 2, //The number of Columns in the grid
,GridLayoutManager.HORIZONTAL,false);
                recyclerView.setLayoutManager(mLayoutManager);
1
Usama Nasir

フラグメントでこれを試してください

layoutManager = new LinearLayoutManager(getActivity()、LinearLayoutManager.HORIZONTAL、false);

0
Karan Chunara

それはペルシャ語の問題です。ListView、GridView、または...を回転させるだけで、その後はセルを回転させるだけです。 xml Android:rotate = "360"で実行できます。

0
Programer_saeed

これを試して

上記のすべての回答を試してみましたが、同じリサイクラービューが表示されているため、別の例を試してみました。

  1. アダプターを初期化する

    private Adapter mAdapter;
    
  2. このようにアダプターを設定します

    mAdapter = new Adapter();
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
    recycler_view.setLayoutManager(linearLayoutManager);
    recycler_view.setAdapter(mAdapter);
    

完全なコードを参照してください this link

0
Sunil