我在我的应用程序的recyclerview上有空格,我不知道为什么会有,因为我使用了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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="ideias.prime.mungano.Home"
tools:showIn="@layout/activity_home">
<android.support.v7.widget.RecyclerView
android:id="@+id/clients_rv"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
这是recyclerview项目模型
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:id="@+id/cl_CardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
card_view:cardBackgroundColor="@color/colorAccent"
card_view:cardCornerRadius="12dp"
card_view:cardUseCompatPadding="true"
card_view:contentPadding="6dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
android:id="@+id/cl_name"
android:layout_width="69dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:ellipsize="end"
android:fitsSystemWindows="true"
android:padding="4dp"
android:singleLine="true"
android:text="@string/cl_name"
android:textColor="@color/colorPrimaryText"
android:textSize="15sp"
android:typeface="serif" />
<TextView
android:id="@+id/nome_do_cliente"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/cl_name"
android:ellipsize="end"
android:fitsSystemWindows="true"
android:padding="4dp"
android:singleLine="true"
android:text="@string/programmer"
android:textColor="@color/colorPrimaryText"
android:textSize="15sp"
android:typeface="serif" />
<TextView
android:id="@+id/cl_work"
android:layout_width="82dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/cl_name"
android:ellipsize="end"
android:fitsSystemWindows="true"
android:padding="4dp"
android:singleLine="true"
android:text="@string/cl_work"
android:textAlignment="center"
android:textColor="@color/colorPrimaryText"
android:textSize="15sp"
android:typeface="serif" />
<TextView
android:id="@+id/trabalho_do_cliente"
android:layout_width="99dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/cl_work"
android:layout_toEndOf="@+id/cl_work"
android:ellipsize="end"
android:fitsSystemWindows="true"
android:singleLine="true"
android:text="@string/primeIdeas"
android:textColor="@color/colorPrimaryText"
android:textSize="15sp"
android:typeface="serif" />
<TextView
android:id="@+id/cl_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/cl_work"
android:fitsSystemWindows="true"
android:padding="4dp"
android:text="@string/cl_phone"
android:textColor="@color/colorPrimaryText"
android:textSize="15sp" />
<TextView
android:id="@+id/telefone_do_cliente"
android:layout_width="99dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/cl_phone"
android:layout_toEndOf="@+id/cl_work"
android:ellipsize="end"
android:fitsSystemWindows="true"
android:singleLine="true"
android:text="@string/primeIdeas"
android:textColor="@color/colorPrimaryText"
android:textSize="15sp"
android:typeface="serif" />
<TextView
android:id="@+id/cl_LP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/trabalho_do_cliente"
android:layout_alignParentEnd="true"
android:ellipsize="end"
android:ems="10"
android:fitsSystemWindows="true"
android:padding="4dp"
android:singleLine="true"
android:text="@string/cl_LP"
android:textColor="@color/colorPrimaryText"
android:textSize="15sp" />
<TextView
android:id="@+id/cl_LP_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/telefone_do_cliente"
android:layout_alignParentEnd="true"
android:ellipsize="end"
android:ems="10"
android:fitsSystemWindows="true"
android:padding="4dp"
android:singleLine="true"
android:text="@string/cl_Lp_info"
android:textColor="@color/colorPrimaryText"
android:textSize="15sp" />
<TextView
android:id="@+id/cl_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="53dp"
android:layout_toEndOf="@+id/cl_phone"
android:ellipsize="end"
android:ems="10"
android:fitsSystemWindows="true"
android:padding="4dp"
android:singleLine="true"
android:text="@string/Id"
android:textColor="@color/colorPrimaryText"
android:textSize="15sp"
android:visibility="gone" />
</RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
这是适配器
public class Rv_adapter extends RecyclerView.Adapter<Rv_adapter.Holder> {
private Context context;
private List<Model> list = new ArrayList<>();
private Face f;
public Rv_adapter(Context c) {
context = c;
}
public Rv_adapter(Context c, List<Model> l) {
this.context = c;
this.list = l;
}
public void Listenner(Face interfaCe) {
this.f = interfaCe;
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context.getApplicationContext()).inflate(R.layout.rv_model, parent, false);
return new Holder(v);
}
@Override
public void onBindViewHolder(Holder holder, int position) {
holder.Id.setText(list.get(position).getId());
holder.Name.setText(list.get(position).getName());
holder.Lp.setText(list.get(position).getLp());
holder.Phone.setText(list.get(position).getPhone());
holder.Work.setText(list.get(position).getWork());
}
@Override
public int getItemCount() {
return list.size();
}
class Holder extends RecyclerView.ViewHolder {
private CardView c;
private TextView Id, Name, Work, Phone, Lp;
public Holder(View i) {
super(i);
c = (CardView) i.findViewById(R.id.cl_CardView);
Id = (TextView) i.findViewById(R.id.cl_id);
Name = (TextView) i.findViewById(R.id.nome_do_cliente);
Work = (TextView) i.findViewById(R.id.trabalho_do_cliente);
Phone = (TextView) i.findViewById(R.id.telefone_do_cliente);
Lp = (TextView) i.findViewById(R.id.cl_LP_info);
}
} // end
public interface Face {
void Clicked(View v, int position, String cl_id);
}
}
以下是recyclerview
上不需要的空格的屏幕截图答案 0 :(得分:0)
将您的recyclerview高度从android:layout_height="match_parent"
更改为
android:layout_height="wrap_content"
。
以及为什么要为您的相对布局提供滚动行为? RecyclerView已经开始了!
答案 1 :(得分:0)
recyclerview 没有问题,您应该在 R.layout.rv_model 文件中进行更改。您已将android:fitsSystemWindows="true"
属性设置为<TextView>
。
大多数情况下,您的应用程序不需要在状态栏或导航栏下绘制,但如果您这样做:您需要确保交互式元素(如按钮)不会隐藏在它们下面。这就是android:fitsSystemWindows =“true”属性的默认行为:它设置View的填充以确保内容不会覆盖系统窗口。
要记住的一些事项:
fitsSystemWindows首先应用深度 - 排序很重要:它是第一个使用插件产生差异的视图
Insets总是相对于整个窗口 - 即使在布局发生之前也可以应用插入,所以不要假设默认行为在应用其填充时知道View的位置
你设置的任何其他填充都会被覆盖 - 如果你在同一个视图中使用android:fitsSystemWindows =“true”,你会注意到paddingLeft / paddingTop / etc是无效的
而且,在很多情况下,例如全屏视频播放,这就足够了。你有你的完整出血视图没有属性和另一个全屏ViewGroup与android:fitsSystemWindows =“true”为您想要插入的控件。
或许您希望您的RecyclerView在透明导航栏下方滚动 - 通过使用android:fitsSystemWindows =“true”与android:clipToPadding =“false”一起使用,您的滚动内容将位于控件后面,但滚动到在底部,最后一个项目仍然会被填充到导航栏上方(而不是隐藏在下面!)。
检查您是否需要有关android:fitsSystemWindows
的更多信息答案 2 :(得分:0)
您的项目布局每个都填满了屏幕的一部分。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" <!-- Here needs to be wrap_content -->
android:orientation="vertical">
<android.support.v7.widget.CardView
android:id="@+id/cl_CardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
并从TextView中删除android:fitsSystemWindows="true"
,因为它们不需要适合系统窗口。