【问题标题】:horizontal recyclerview has item cardview bottom textview part not fully displayed水平 recyclerview 有项目 cardview 底部 textview 部分未完全显示
【发布时间】:2018-10-01 11:52:55
【问题描述】:

尝试将水平循环视图用于轮播行为,但在横向模式下,该项目未正确显示。

使用https://github.com/AndroidCodility/HorizontalRecyclerview 的项目可以看到相同的行为(以及其他一些 github 示例)

横向

在此处借用显示问题的代码(归功于 Govind)。

代码简单明了:

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)
    }
}

和适配器:

/**
 * 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)
        }
    }
}

主要布局:

    <?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>

卡片项目布局:

<?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>

【问题讨论】:

    标签: android android-layout android-recyclerview android-cardview horizontal-scrolling


    【解决方案1】:

    卡片项目布局

    中将LinearLayout的高度更改为android:layout_height="wrap_content"

    试试这个

    <?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>
    

    编辑

    <?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>
    

    【讨论】:

    • 修改后还是一样,textview没有完全显示出来。
    • @lannyf 可能与您的main layout: 有问题,请检查更新的答案
    • 使用更新后的主布局(不更改项目布局)有效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多