【问题标题】:CardView is wrap_content list item instead of match_parentCardView 是 wrap_content 列表项而不是 match_parent
【发布时间】:2016-09-30 19:09:17
【问题描述】:

卡片视图包装内容而不是匹配父项。所有列表项都被包装而不是匹配其宽度。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout      
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_margin="@dimen/card_margin"
        android:elevation="3dp"
        card_view:cardCornerRadius="@dimen/card_album_radius">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ImageView
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:id="@+id/Album_Art"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:src="@drawable/ic_google_music" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="@string/song_name"
                android:id="@+id/Sname"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/Album_Art"
                android:layout_toEndOf="@+id/Album_Art" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:text="@string/artist_album"
                android:id="@+id/Sdata"
                android:layout_centerVertical="true"
                android:layout_centerHorizontal="true"
                android:layout_toRightOf="@+id/Album_Art"
                android:layout_toEndOf="@+id/Album_Art"/>

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

手动设置宽度有效。当我将它设置为较大的 dp 值时,它工作正常,除了列表项不在窗口之外。我不明白为什么 match_parent 不起作用。任何有关如何解决此问题的线索将不胜感激。

【问题讨论】:

  • 我猜想当您在 Adapter 中扩展布局时,您正在为父级传递 null。
  • @MikeM。是的,我必须通过什么?
  • ViewGroup 传递到您正在膨胀布局的方法中。可能命名为parent
  • 尝试在xml中设置TextView为match_parent
  • @MikeM。你是救生员!

标签: android android-recyclerview android-cardview


【解决方案1】:

你在使用 recyclerView 吗? 如果是这样,你应该像这样在 layoutmanager 上覆盖它:

    layoutManager = new LinearLayoutManager(getActivity()) {
            @Override
            public RecyclerView.LayoutParams generateDefaultLayoutParams() {
                return new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT);
            }
        };
    }

【讨论】:

    【解决方案2】:

    如果您使用的是RecyclerViewAdapter,请确保您使用的是inflate 方法的第一个签名,而不是onCreateViewHolder 中的第二个签名。

    1. inflate(LayoutInflater inflater, ViewGroup root, boolean attachToRoot)  
    
    2. inflate(LayoutInflater inflater)
    

    并且,确保为 root 传递 parent,为 attachToRoot 传递 true/false

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-02
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多