简体   繁体   English

水平recyclerview的项目cardview底部textview部分未完全显示

[英]horizontal recyclerview has item cardview bottom textview part not fully displayed

Trying to use horizontal recycleview for carousel behavior, but in landscape mode the item is not displayed right. 尝试将水平回收视图用于轮播行为,但是在横向模式下该项目未正确显示。

The same behavior could be seen by using the project at https://github.com/AndroidCodility/HorizontalRecyclerview (and a few other github examples) 通过使用位于https://github.com/AndroidCodility/Horizo​​ntalRecyclerview的项目(以及其他一些github示例),可以看到相同的行为

在此处输入图片说明

in landscape 在风景中

在此处输入图片说明

Borrow the code for showing the issue here (credit goes to Govind). 在此处借用显示问题的代码(贷记给Govind)。

the code is straight forward and simple: 代码简单明了:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        if (Utility.isOnline(this)) {
            displayList()
        } else {
            Toast.makeText(this, R.string.no_internet, Toast.LENGTH_SHORT).show()
        }
    }

    private fun displayList() {
        val version = ArrayList<Version>()
        version.addAll(Version.getList())
        recyclerView.layoutManager = LinearLayoutManager(this, LinearLayout.HORIZONTAL, false)
        recyclerView.adapter = MyAdapter(version)
    }
}

and the adapter: 和适配器:

/**
 * Created by Govind on 3/7/2018.
 */
class MyAdapter(private val versionList: ArrayList<Version>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_list, parent, false))
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.bindItems(versionList[position])
    }

    override fun getItemCount(): Int {
        return versionList.size
    }

    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        fun bindItems(version: Version) {
            val textView = itemView.findViewById<TextView>(R.id.tvName)
            val imageView = itemView.findViewById<ImageView>(R.id.imageView)
            textView.text = version.name

            Glide.with(itemView.context).load(version.url).into(imageView)
        }
    }
}

main layout: 主要布局:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.codility.horizontalrecyclerview.MainActivity">

    <android.support.v7.widget.AppCompatTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="10dp"
        android:text="@string/applicant_name"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="40sp" />

    <android.support.v7.widget.LinearLayoutCompat
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/colorPrimary" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="@string/about"
        android:textColor="@color/colorPrimary"
        android:textSize="18sp" />

</LinearLayout>

card item layout: 卡项目布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:background="@color/colorAccent"
    card_view:cardCornerRadius="8dp"
    card_view:cardUseCompatPadding="true">

    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="@color/colorAccent"
        android:orientation="vertical">

        <android.support.v7.widget.AppCompatImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:scaleType="centerCrop"
            android:src="@mipmap/ic_launcher_round" />

        <android.support.v7.widget.AppCompatTextView
            android:id="@+id/tvName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:padding="8dp"
            android:text="@string/app_name"
            android:textColor="#ffffff"
            android:textSize="16sp" />

    </LinearLayout>

</android.support.v7.widget.CardView>

Change the height of your LinearLayout to android:layout_height="wrap_content" in your card item layout 卡片项目布局中将LinearLayout的高度更改为android:layout_height="wrap_content"

Try this 尝试这个

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:background="@color/colorAccent"
    card_view:cardCornerRadius="8dp"
    card_view:cardUseCompatPadding="true">

    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:background="@color/colorAccent"
        android:orientation="vertical">

        <android.support.v7.widget.AppCompatImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:scaleType="centerCrop"
            android:src="@mipmap/ic_launcher_round" />

        <android.support.v7.widget.AppCompatTextView
            android:id="@+id/tvName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:padding="8dp"
            android:text="@string/app_name"
            android:textColor="#ffffff"
            android:textSize="16sp" />

    </LinearLayout>

</android.support.v7.widget.CardView>

EDIT 编辑

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView 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:fillViewport="true"
    android:layout_height="match_parent">


    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.codility.horizontalrecyclerview.MainActivity">

        <android.support.v7.widget.AppCompatTextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:padding="10dp"
            android:text="@string/applicant_name"
            android:textColor="@color/colorPrimaryDark"
            android:textSize="40sp" />

        <android.support.v7.widget.LinearLayoutCompat
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/colorPrimary" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:nestedScrollingEnabled="false"
            android:orientation="horizontal"
            android:padding="10dp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="@string/about"
            android:textColor="@color/colorPrimary"
            android:textSize="18sp" />

    </LinearLayout>
</android.support.v4.widget.NestedScrollView>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 文本未在textview中完全显示 - text is not fully displayed in textview 在 RecyclerView CardView 中更改 TextView 宽度 - Changing TextView width in RecyclerView CardView 如何在recyclerView中对cardView项值求和并在recyclerView外部的textView上显示总和 - How to sum cardView item values in recyclerView and display the total sum on a textView outside the recyclerView 如何通过横向滚动检查卡内的TextView扩展recyclerView中的cardView尺寸? - How to check the TextView inside card extends the cardView size in recyclerView with Horizontal scrolling? CardView与RecyclerView项目内的ViewPager - Cardview with viewpager inside recyclerview item RecyclerView中的cardView没有显示任何项目 - cardView in a RecyclerView is not showing any item RecyclerView中的CardView无间隙且textview布局不正确 - CardView in RecyclerView no gap and textview out of layout textview 是否可以在回收站视图中稍微超出卡片视图? - Is it possible to have a textview slightly out of a cardview in a recyclerview? 如何在 cardview 中为 recyclerview 对齐 textview - How can I align the textview in cardview for recyclerview ScrollView / NestedScrollView中的Recyclerview和Cardview(水平布局) - Recyclerview & Cardview (Horizontal Layout) within a ScrollView/NestedScrollView
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM