android按钮与textview相同的高度

时间:2017-06-25 14:53:47

标签: android user-interface android-linearlayout relativelayout

我正在努力为列表项创建UI,如下所示:enter image description here

我正在尝试为我的列表项建立类似的布局,如上图所示。但是,我很困难,因为我不知道如何嵌套视图,因此销售按钮与文本视图具有相同的高度。

如果我使用RelativeLayout而不能再使用layout_weight属性,那么将视图均匀地水平放置在屏幕上。

但是,如果我使用LinearLayout而不能使用alignTop之类的相对属性等等。我试图以某种方式嵌套观点,所以我可以实现这一点,但是到目前为止我失败了...(因为我的英语技能很差)

这是我到目前为止所做的,但是我仍然无法得到理想的结果:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:padding="16dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="45dp">

        <TextView
            android:id="@+id/productname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="Google Pixel" />

        <TextView
            android:id="@+id/price"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/productname"
            tools:text="699$" />

        <TextView
            android:id="@+id/quantity_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            tools:text="Quantity" />

        <TextView
            android:id="@+id/quantity"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/quantity_textview"
            android:layout_centerHorizontal="true"
            tools:text="31" />
    </RelativeLayout>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:layout_alignParentRight="true"
        tools:text="SELL"
        android:layout_alignParentTop="true" />
</RelativeLayout>

enter image description here

2 个答案:

答案 0 :(得分:2)

我建议ConstraintLayout。这将允许您将按钮的顶部设置为约束到第一个文本视图的顶部,将按钮的底部约束到第二个文本视图的底部,并使用水平从左到右保持均匀分布链

这是一个我刚刚拼凑在一起的例子:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:layout_height="match_parent">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="0dp"
        android:text="TextView"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/textView4"
        app:layout_constraintTop_toTopOf="@+id/textView4"
        tools:text="Google Pixel" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="0dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:text="TextView"
        app:layout_constraintBottom_toBottomOf="@+id/textView5"
        app:layout_constraintLeft_toLeftOf="@+id/textView2"
        app:layout_constraintRight_toRightOf="@+id/textView2"
        tools:text="6995" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="TextView"
        app:layout_constraintLeft_toRightOf="@+id/textView2"
        app:layout_constraintRight_toLeftOf="@+id/button2"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="Quantity" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="32dp"
        android:text="TextView"
        app:layout_constraintLeft_toLeftOf="@+id/textView4"
        app:layout_constraintRight_toRightOf="@+id/textView4"
        app:layout_constraintTop_toBottomOf="@+id/textView4"
        tools:text="31" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="0dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="0dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="@+id/textView5"
        app:layout_constraintLeft_toRightOf="@+id/textView4"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="@+id/textView4"
        tools:text="Sell" />
</android.support.constraint.ConstraintLayout>

这会在预览中为您提供此布局:

Sample Layout

这就是预览看起来像显示约束的内容。您可以看到按钮被约束到两个视图(虚线),以及跨越&#34; Google Pixel&#34;标签,&#34;数量&#34;标签,以及保持所有内容均匀分布的按钮。

Sample Layout Showing Constraints

请注意,如果您希望按钮缩小以缩小以匹配第二个文本视图的底部,则必须将按钮的minHeight属性设置为0.您可能还需要如果您想要顶部和底部的像素完美对齐,则替换按钮的默认背景,因为默认背景drawable具有一些内置填充。

希望有所帮助!

答案 1 :(得分:0)

尝试使用框架布局,您可以根据需要调整视图。 或者,您可以使用带有自定义适配器的listview来创建此类视图。你可以参考这个链接

http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/