Android水平循环查看横向填充屏幕
我得到了一个水平的回收视图。它显示了一个元素列表。我的问题是它在大屏幕和横向模式下看起来很糟糕。风景看起来很糟糕。如何修复第一个截图中的喜欢 HomeFragment.classAndroid水平循环查看横向填充屏幕,android,android-recyclerview,Android,Android Recyclerview,我得到了一个水平的回收视图。它显示了一个元素列表。我的问题是它在大屏幕和横向模式下看起来很糟糕。风景看起来很糟糕。如何修复第一个截图中的喜欢 HomeFragment.class RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view); recyclerView.setHasFixedSize(true); HorizontalRecycleVi
RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view);
recyclerView.setHasFixedSize(true);
HorizontalRecycleViewAdapter adapter = new HorizontalRecycleViewAdapter(getActivity(), categoriesList);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setAdapter(adapter);
public class HorizontalRecycleViewAdapter extends RecyclerView.Adapter<HorizontalRecycleViewAdapter.SingleItemRowHolder> {
private ArrayList<Category> itemsList;
private Context mContext;
public HorizontalRecycleViewAdapter(Context context, ArrayList<Category> itemsList) {
this.itemsList = itemsList;
this.mContext = context;
}
@Override
public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_single_card, null);
SingleItemRowHolder mh = new SingleItemRowHolder(v);
return mh;
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
Category item = itemsList.get(i);
holder.title.setText(item.getName());
holder.imageResource.setImageResource(item.getImageSource());
}
@Override
public int getItemCount() {
return (null != itemsList ? itemsList.size() : 0);
}
public class SingleItemRowHolder extends RecyclerView.ViewHolder {
protected TextView title;
protected ImageView imageResource;
public SingleItemRowHolder(View view) {
super(view);
this.title = (TextView) view.findViewById(R.id.tvTitle);
this.imageResource = (ImageView) view.findViewById(R.id.itemImage);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), title.getText(), Toast.LENGTH_SHORT).show();
}
});
}
}
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
Category item = itemsList.get(i);
holder.title.setText(item.getName());
holder.imageResource.setImageResource(item.getImageSource());
if (Utils.getScreenOrientation((Activity) mContext) == 2) {
holder.imageResource.getLayoutParams().width = Utils.getScreenWidth((Activity) mContext) / getItemCount();
}
}
public class Utils{
public static int getScreenOrientation(Activity activity) {
Display getOrient = activity.getWindowManager().getDefaultDisplay();
int orientation = Configuration.ORIENTATION_UNDEFINED;
if (getOrient.getWidth() == getOrient.getHeight()) {
orientation = Configuration.ORIENTATION_SQUARE;
} else {
if (getOrient.getWidth() < getOrient.getHeight()) {
orientation = Configuration.ORIENTATION_PORTRAIT;
} else {
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
return orientation;
}
public static int getScreenWidth(Activity activity) {
Display display = activity.getWindowManager().getDefaultDisplay();
return display.getWidth();
}
}
fragment_home.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="200dp"
android:scrollbars="none" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/itemImage"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitCenter"
android:layout_marginBottom="5dp"
android:src="@drawable/android" />
<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/itemImage"
android:gravity="center"
android:padding="5dp"
android:text="Sample title"
android:textColor="@android:color/black"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
水平循环使用自适应类
RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view);
recyclerView.setHasFixedSize(true);
HorizontalRecycleViewAdapter adapter = new HorizontalRecycleViewAdapter(getActivity(), categoriesList);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setAdapter(adapter);
public class HorizontalRecycleViewAdapter extends RecyclerView.Adapter<HorizontalRecycleViewAdapter.SingleItemRowHolder> {
private ArrayList<Category> itemsList;
private Context mContext;
public HorizontalRecycleViewAdapter(Context context, ArrayList<Category> itemsList) {
this.itemsList = itemsList;
this.mContext = context;
}
@Override
public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_single_card, null);
SingleItemRowHolder mh = new SingleItemRowHolder(v);
return mh;
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
Category item = itemsList.get(i);
holder.title.setText(item.getName());
holder.imageResource.setImageResource(item.getImageSource());
}
@Override
public int getItemCount() {
return (null != itemsList ? itemsList.size() : 0);
}
public class SingleItemRowHolder extends RecyclerView.ViewHolder {
protected TextView title;
protected ImageView imageResource;
public SingleItemRowHolder(View view) {
super(view);
this.title = (TextView) view.findViewById(R.id.tvTitle);
this.imageResource = (ImageView) view.findViewById(R.id.itemImage);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), title.getText(), Toast.LENGTH_SHORT).show();
}
});
}
}
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
Category item = itemsList.get(i);
holder.title.setText(item.getName());
holder.imageResource.setImageResource(item.getImageSource());
if (Utils.getScreenOrientation((Activity) mContext) == 2) {
holder.imageResource.getLayoutParams().width = Utils.getScreenWidth((Activity) mContext) / getItemCount();
}
}
public class Utils{
public static int getScreenOrientation(Activity activity) {
Display getOrient = activity.getWindowManager().getDefaultDisplay();
int orientation = Configuration.ORIENTATION_UNDEFINED;
if (getOrient.getWidth() == getOrient.getHeight()) {
orientation = Configuration.ORIENTATION_SQUARE;
} else {
if (getOrient.getWidth() < getOrient.getHeight()) {
orientation = Configuration.ORIENTATION_PORTRAIT;
} else {
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
return orientation;
}
public static int getScreenWidth(Activity activity) {
Display display = activity.getWindowManager().getDefaultDisplay();
return display.getWidth();
}
}
公共类HorizontalRecycleViewAdapter扩展了RecycleView.Adapter{
私有ArrayList项目列表;
私有上下文;
public HorizontalRecycleViewAdapter(上下文上下文,ArrayList项列表){
this.itemsList=itemsList;
this.mContext=上下文;
}
@凌驾
public SingleItemRowHolder onCreateViewHolder(视图组视图组,int i){
视图v=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.list\u single\u card,null);
SingleItemRowHolder mh=新的SingleItemRowHolder(v);
返回mh;
}
@凌驾
public void onBindViewHolder(SingleItemRowHolder,int i){
类别项目=项目列表获取(i);
holder.title.setText(item.getName());
holder.imageResource.setImageResource(item.getImageSource());
}
@凌驾
public int getItemCount(){
返回值(null!=itemsList?itemsList.size():0);
}
公共类SingleItemRowHolder扩展了RecyclerView.ViewHolder{
受保护的文本视图标题;
受保护的ImageView图像资源;
公共单项目行持有者(视图){
超级(视图);
this.title=(TextView)view.findViewById(R.id.tvTitle);
this.imageResource=(ImageView)view.findViewById(R.id.itemImage);
view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(v.getContext(),title.getText(),Toast.LENGTH_SHORT).show();
}
});
}
}
}
单卡列表.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="200dp"
android:scrollbars="none" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/itemImage"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitCenter"
android:layout_marginBottom="5dp"
android:src="@drawable/android" />
<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/itemImage"
android:gravity="center"
android:padding="5dp"
android:text="Sample title"
android:textColor="@android:color/black"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
修改为@OnurÇevik所说的带有ImageView布局参数 代码如下: 水平循环使用自适应类
RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view);
recyclerView.setHasFixedSize(true);
HorizontalRecycleViewAdapter adapter = new HorizontalRecycleViewAdapter(getActivity(), categoriesList);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setAdapter(adapter);
public class HorizontalRecycleViewAdapter extends RecyclerView.Adapter<HorizontalRecycleViewAdapter.SingleItemRowHolder> {
private ArrayList<Category> itemsList;
private Context mContext;
public HorizontalRecycleViewAdapter(Context context, ArrayList<Category> itemsList) {
this.itemsList = itemsList;
this.mContext = context;
}
@Override
public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_single_card, null);
SingleItemRowHolder mh = new SingleItemRowHolder(v);
return mh;
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
Category item = itemsList.get(i);
holder.title.setText(item.getName());
holder.imageResource.setImageResource(item.getImageSource());
}
@Override
public int getItemCount() {
return (null != itemsList ? itemsList.size() : 0);
}
public class SingleItemRowHolder extends RecyclerView.ViewHolder {
protected TextView title;
protected ImageView imageResource;
public SingleItemRowHolder(View view) {
super(view);
this.title = (TextView) view.findViewById(R.id.tvTitle);
this.imageResource = (ImageView) view.findViewById(R.id.itemImage);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), title.getText(), Toast.LENGTH_SHORT).show();
}
});
}
}
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
Category item = itemsList.get(i);
holder.title.setText(item.getName());
holder.imageResource.setImageResource(item.getImageSource());
if (Utils.getScreenOrientation((Activity) mContext) == 2) {
holder.imageResource.getLayoutParams().width = Utils.getScreenWidth((Activity) mContext) / getItemCount();
}
}
public class Utils{
public static int getScreenOrientation(Activity activity) {
Display getOrient = activity.getWindowManager().getDefaultDisplay();
int orientation = Configuration.ORIENTATION_UNDEFINED;
if (getOrient.getWidth() == getOrient.getHeight()) {
orientation = Configuration.ORIENTATION_SQUARE;
} else {
if (getOrient.getWidth() < getOrient.getHeight()) {
orientation = Configuration.ORIENTATION_PORTRAIT;
} else {
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
return orientation;
}
public static int getScreenWidth(Activity activity) {
Display display = activity.getWindowManager().getDefaultDisplay();
return display.getWidth();
}
}
Utils.class
RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view);
recyclerView.setHasFixedSize(true);
HorizontalRecycleViewAdapter adapter = new HorizontalRecycleViewAdapter(getActivity(), categoriesList);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setAdapter(adapter);
public class HorizontalRecycleViewAdapter extends RecyclerView.Adapter<HorizontalRecycleViewAdapter.SingleItemRowHolder> {
private ArrayList<Category> itemsList;
private Context mContext;
public HorizontalRecycleViewAdapter(Context context, ArrayList<Category> itemsList) {
this.itemsList = itemsList;
this.mContext = context;
}
@Override
public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_single_card, null);
SingleItemRowHolder mh = new SingleItemRowHolder(v);
return mh;
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
Category item = itemsList.get(i);
holder.title.setText(item.getName());
holder.imageResource.setImageResource(item.getImageSource());
}
@Override
public int getItemCount() {
return (null != itemsList ? itemsList.size() : 0);
}
public class SingleItemRowHolder extends RecyclerView.ViewHolder {
protected TextView title;
protected ImageView imageResource;
public SingleItemRowHolder(View view) {
super(view);
this.title = (TextView) view.findViewById(R.id.tvTitle);
this.imageResource = (ImageView) view.findViewById(R.id.itemImage);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), title.getText(), Toast.LENGTH_SHORT).show();
}
});
}
}
}
@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
Category item = itemsList.get(i);
holder.title.setText(item.getName());
holder.imageResource.setImageResource(item.getImageSource());
if (Utils.getScreenOrientation((Activity) mContext) == 2) {
holder.imageResource.getLayoutParams().width = Utils.getScreenWidth((Activity) mContext) / getItemCount();
}
}
public class Utils{
public static int getScreenOrientation(Activity activity) {
Display getOrient = activity.getWindowManager().getDefaultDisplay();
int orientation = Configuration.ORIENTATION_UNDEFINED;
if (getOrient.getWidth() == getOrient.getHeight()) {
orientation = Configuration.ORIENTATION_SQUARE;
} else {
if (getOrient.getWidth() < getOrient.getHeight()) {
orientation = Configuration.ORIENTATION_PORTRAIT;
} else {
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
return orientation;
}
public static int getScreenWidth(Activity activity) {
Display display = activity.getWindowManager().getDefaultDisplay();
return display.getWidth();
}
}
公共类Utils{
公共静态整型getScreenOrientation(活动){
Display getOrient=activity.getWindowManager().getDefaultDisplay();
int方向=配置。方向\未定义;
如果(getOrient.getWidth()==getOrient.getHeight()){
方向=配置。方向\方形;
}否则{
if(getOrient.getWidth()
您可以为横向模式使用不同的列表项布局,也可以更改ImageView的layoutparams并将其增加到最适合您的值。