【问题标题】:Displaying UI widgets in Cardview in android L在 android L 的 Cardview 中显示 UI 小部件
【发布时间】:2014-08-26 07:56:40
【问题描述】:

我正在尝试在 cardview 中创建一个应用程序,cardview 包含两个文本视图,它们需要彼此相邻放置,但文本视图正在重叠。是否有任何机制可以在 Cardviews 的 RelativeLayout(layout_below 或 layout_toRightOf) 中放置类似的元素。 我可以通过向 Relativelayout 添加阴影并使其看起来像 Cardview 来做到这一点,我想在 Cardview 中做到这一点。

我的布局代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@android:color/black"
    android:layout_height="match_parent">

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:background="@color/white"
        android:layout_width="200dp"
        android:layout_height="200dp">

        <TextView
            android:id="@+id/info_text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Textview one"
            android:gravity="center"
            android:textSize="36sp" />
        <TextView
            android:id="@+id/info_text1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Textview two"
            android:gravity="center"
            android:textSize="36sp" />
    </android.support.v7.widget.CardView>
</RelativeLayout>

目前显示如附图:

【问题讨论】:

    标签: android android-layout android-5.0-lollipop android-cardview


    【解决方案1】:

    来自CardView的描述

    CardView 扩展了 FrameLayout 类并让您显示信息 在任何应用程序上具有一致外观的卡片内部。 CardView 小部件 可以有阴影和圆角。

    您可能知道,在FrameLayout 中,视图定位之间没有约束或关系。它们将在彼此上方显示。如果您想在 CardView 中使用不同的层次结构,请使用您想要的任何布局。例如:

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:background="@color/white"
        android:layout_width="200dp"
        android:layout_height="200dp">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:id="@+id/info_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Textview one"
                android:gravity="center"
                android:textSize="36sp" />
            <TextView
                android:id="@+id/info_text1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Textview two"
                android:gravity="center"
                android:textSize="36sp" />
        </LinearLayout>
    
    </android.support.v7.widget.CardView>
    

    仅将CardView 视为外部装饰,您可以在内部使用任何布局。因此,如果LinearLayout 不合适,您可以使用RelativeLayout 等。

    【讨论】:

    • 正如我在问题中提到的,我可以通过将卡片视图的内容嵌入到布局中来做到这一点。我一直在寻找不这样做的选项,因为它们很贵。
    • 您写道:“我可以通过向 Relativelayout 添加阴影并使其看起来像 Cardview 来做到这一点” - 这基本上意味着您可以使用 @“模仿”CardView 987654329@ 并为其添加阴影,并不是说您知道可以在其中添加RelativeLayout :) 但可以。因此,您有两种解决方案:1. 使用我在回答中建议的内部布局或 2. 扩展 CardView 并自行实现自定义度量和布局方法(与创建自定义布局和定位子项的方式相同)来自代码)。没有其他方法可以做到这一点。
    • AFAIK 你不能扩展 CardView。
    • 你为什么不能这样做?
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多