J'ai créé un RecyclerView horizontal et cela fonctionne bien (grâce à this ) mais la direction du défilement et des données s’étend de gauche à droite; Alors, comment puis-je changer la direction de défilement RecyclerView comme dans l’illustration ci-dessous?
Mon code:
StaggeredGridLayoutManager staggeredGridLayoutManager =
new StaggeredGridLayoutManager(
2, //The number of Columns in the grid
LinearLayoutManager.HORIZONTAL);
En supposant que vous utilisiez LinearLayoutManager
dans votre RecyclerView, vous pouvez alors passer true
en tant que troisième argument du constructeur LinearLayoutManager .
Par exemple:
mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true));
Si vous utilisez la variable StaggeredGridLayoutManager
, vous pouvez utiliser la méthode setReverseLayout
fournie.
Vous pouvez le faire avec juste xml.
l'application: reverseLayout = "true" fait le travail!
<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" />
Horizontal RecyclerView avec imageview et textview
fichier 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" />
Classe 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);
}}
Classe 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};}
Essayez ceci en fragment
layoutManager = new LinearLayoutManager (getActivity (), LinearLayoutManager.HORIZONTAL, false);
Ajoutez simplement deux lignes de code pour que l'orientation de recyclerview soit horizontale. Ajoutez donc ces lignes lors de l’initialisation de Recyclerview.
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
my_recycler.setLayoutManager(linearLayoutManager);
Ce code suivant est suffisant
RecyclerView recyclerView;
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,true);
recyclerView.setLayoutManager(layoutManager);
Approche XML sous androidx:
<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">
Il s’agit d’un problème de langue persane, Il suffit de faire pivoter votre ListView, GridView ou .... et après cela, faites pivoter votre cellule . Vous pouvez le faire en Android xml: rotate = "360".
J'ai essayé toutes les réponses ci-dessus, cela me montre la même vue verticale du recycleur, alors j'ai essayé un autre exemple.
Initialiser l'adaptateur
private Adapter mAdapter;
régler l'adaptateur comme ça
mAdapter = new Adapter();
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
recycler_view.setLayoutManager(linearLayoutManager);
recycler_view.setAdapter(mAdapter);
J'espère que cela fonctionnera aussi pour vous Pour Code complet, reportez-vous à this link