[英]Android CardView padding error
我正在关注一个教程,在cardview和recyclerview的帮助下,我应该能够像这样列出彼此之下的文本:它应该是什么样子(不需要图像)
它看起来如何
正如标题所述,并且可以在图片上看到,看起来像是2个cardview项目之间的巨大填充,这显然不是我想要的东西。 我希望它们彼此靠近,因为它可以在另一张照片上看到。
请记住,我是一个超初学者程序员:D。 提前感谢所有答案。
cards_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="cards main container">
<android.support.v7.widget.CardView
android:layout_width="300dp"
android:layout_height="60dp"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
card_view:cardElevation="5dp"
card_view:cardUseCompatPadding="true"
card_view:cardBackgroundColor="#FFF"
android:id="@+id/card_view"
android:layout_gravity="center_horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="Marketing Tip"
android:id="@+id/textviewName"
android:textColor="#000"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
HomeActivity.java
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import java.util.ArrayList;
public class HomeActivity extends AppCompatActivity {
private static RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager layoutManager;
private static RecyclerView recyclerView;
private static ArrayList<DataModel> data;
static View.OnClickListener myOnClickListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
setTitle("Home");
myOnClickListener = new myOnClickListener(this);
recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
data = new ArrayList<DataModel>();
for (int i = 0; i < MyData.nameArray.length; i++) {
data.add(new DataModel(
MyData.nameArray[i],
MyData.id_[i]
));
adapter = new CustomAdapter(data);
recyclerView.setAdapter(adapter);
}
}
private static class myOnClickListener implements View.OnClickListener {
private final Context context;
private myOnClickListener(Context context) {
this.context = context;
}
@Override
public void onClick(View v) {
//TODO WRITE THE CODE TO START AN ACTIVITY ONCE THE CARDVIEW IS CLICKED
}
}
}
CustomAdapter.java
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder>{
private ArrayList<DataModel> dataSet;
public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView textviewName;
public MyViewHolder(View itemView) {
super(itemView);
this.textviewName = (TextView)itemView.findViewById(R.id.textviewName);
}
}
public CustomAdapter(ArrayList<DataModel> data){
this.dataSet = data;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cards_layout, parent, false);
view.setOnClickListener(HomeActivity.myOnClickListener);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {
TextView textviewName = holder.textviewName;
textviewName.setText(dataSet.get(listPosition).getName());
}
@Override
public int getItemCount() {
return dataSet.size();
}
}
DataModel.java
public class DataModel {
String name;
int id_;
public DataModel(String name, int id_) {
this.name = name;
this.id_ = id_;
}
public String getName() {
return name;
}
public int getId() {
return id_;
}
}
MyData.java
public class MyData {
static String[] nameArray = {"Buzi", "Kocsog", "Fostalicska", "CiganyTibi"};
static Integer[] id_ = {0, 1, 2, 3};
}
Heyho,
我也是一个初学者,但我猜它是由于你在cards_layout.xml中的linearlayout的高度。
尝试使用wrap_content而不是match_parent。 否则,您将使用与您的recyclerView匹配的大小的卡充气。
希望这会对你有所帮助。
托马斯
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/card_task"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
card_view:contentPadding="16dp"
card_view:cardElevation="2dp"
card_view:cardCornerRadius="5dp"
layout_height="wrap_content"
layout_width="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/desc"
android:padding="5dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Description" />
</LinearLayout>
</android.support.v7.widget.CardView>
上面的布局文件对我有用。 希望能帮助到你
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="cards main container">
<android.support.v7.widget.CardView
android:layout_width="300dp"
android:layout_height="60dp"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
card_view:cardElevation="5dp"
card_view:cardUseCompatPadding="true"
card_view:cardBackgroundColor="#FFF"
android:id="@+id/card_view"
android:layout_gravity="center_horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="Marketing Tip"
android:id="@+id/textviewName"
android:textColor="#000"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
使用此作为您的cardview布局。 您基本上已将match_parent用于线性布局,从而导致视图填满整个屏幕。 将它更改为wrap_content应该可以完成这项工作。 休息很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.