gpt4 book ai didi

android - 将单个项目对齐到 RecyclerView android 中的中心

转载 作者:行者123 更新时间:2023-11-30 01:16:12 25 4
gpt4 key购买 nike

Suppose I have one OR two items in RecyclerView . How could I display them in center RecyclerView must have width and height is match_parent

AFAIK recyclerViewtop 开始。我怎样才能将 gravity = center 赋予它的 single item。我的意思是,如果只有一项出现,它应该位于屏幕中央。RecylerView 没有gravity 属性。有没有别的办法。

我无法将它的高度设置为 wrap_content。因为我还必须添加一个 swipeRefreshLayout。

layout.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/MatchMatch"
android:background="@color/theme_color_gift_finder">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/activity_main_swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">

<android.support.v7.widget.RecyclerView
android:id="@+id/rv_gift_menu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/margin_pad_10" />

</android.support.v4.widget.SwipeRefreshLayout>

<LinearLayout
android:id="@+id/ll_bottom"
style="@style/LinearHorizontal"
android:layout_marginBottom="@dimen/margin_pad_16"
android:background="@android:color/transparent"
android:gravity="center">

<com.netsolace.efc.utility.customviews.widgets.CustomButton
android:id="@+id/btn_go"
android:layout_width="@dimen/circular_go_n_done_btn_size"
android:layout_height="@dimen/circular_go_n_done_btn_size"
android:background="@drawable/oval_generic"
android:text="@string/go"
android:textColor="@color/theme_color_gift_finder"
android:textSize="@dimen/text_size_medium" />

</LinearLayout>

</LinearLayout>

<com.netsolace.efc.utility.customviews.widgets.CustomTextView
android:id="@+id/tv_gift_no_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="No Results"
android:textColor="@android:color/white"
android:textSize="@dimen/text_size_large"
android:textStyle="bold"
android:visibility="gone" />

</FrameLayout>

最佳答案

如果您考虑在中心显示单个列表项,那么我建议使用另一种布局,其中 layout_heightlayout_width 设置为 match_parent 然后当你的列表只包含一个项目时设置列表项。

所以在适配器的 onCreateViewHolder 中,做这样的事情

// Declare a constant named SINGLE_VIEW first, inside your Adapter
private final int SINGLE_VIEW = 1;

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View v;

if (viewType == SINGLE_VIEW) {
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_single, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;

} else {
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;

}
}

然后在getItemViewType 中,您需要返回 正确的 View 。

@Override
public int getItemViewType(int position) {
if(position == 0 && yourList.size() == 1) return SINGLE_VIEW;
else return super.getItemViewType(position);
}

更新

如果你需要把你的RecyclerView放在屏幕的中央,那么你需要像这样设计你的布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="center">

<android.support.v7.widget.RecyclerView
android:id="@+id/my_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>

从上面的代码中可以看出重要的事情是将父 RelativeLayoutgravity 设置为居中并设置 RecyclerView 的高度到 wrap_content

这是我的测试应用截图

Here's my test application screenshot

关于android - 将单个项目对齐到 RecyclerView android 中的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37831081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com