【问题标题】:Why is height of ListItem (a LinearLayout) so tall when layout_height is changed to wrap_content?为什么将 layout_height 更改为 wrap_content 时 ListItem (a LinearLayout) 的高度如此之高?
【发布时间】:2017-04-05 19:49:11
【问题描述】:

我的 ListView 项目有一个非常简单的布局(线性),只有 3 个水平布局的小部件:2 个 TextView 项目,然后是一个 Button。但是,即使所有 3 的 layout_height 都是 wrap_content ,但用于按钮的值似乎会强制 ListItem 扩展得比需要的要多得多。但只需将 layout_height 的值更改为 25dp 即可消除此问题。

为什么Button的wrap_content会有这种效果,如何停止?

请注意下面我的屏幕截图中的背景颜色,显示小部件尺寸。两张图片之间的唯一区别在于,在我的 XML(底部)中,Button 的 layout_height 已从 wrap_content 更改为 25dp。

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

    <TextView
        android:id="@+id/tvTotal"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:layout_gravity="left"
        android:text="0."
        android:textSize="18sp"
        android:maxLines="1"
        android:layout_weight=".15"
        android:background="@color/LightGreen"
        />

    <TextView
        android:id="@+id/tvName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:text=""
        android:textSize="18sp"
        android:maxLines="1"
        android:layout_weight=".55"
        android:background="@color/LightBlue"
        />

    <Button
        android:id="@+id/btnMyButton"
        android:layout_width="0dp"
        android:layout_height="25dp"
        android:gravity="right"
        android:layout_gravity="right"
        android:textColor="@color/CornflowerBlue"
        android:text="Questions"
        android:textSize="16dp"
        android:maxLines="1"
        android:layout_weight=".3"
        android:background="@color/black"
        >
    </Button>

</LinearLayout>

将 wrap_content 用于 Button 的 layout_height:

Button 的 layout_height 硬编码 25dp:

【问题讨论】:

    标签: android android-layout listview textview android-button


    【解决方案1】:

    额外的空间是按钮的默认填充。

    如果您想删除它,请使用:

    android:minHeight="0dp"
    android:minWidth="0dp"
    

    在您的代码中

     <Button
        android:id="@+id/btnMyButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_weight=".3"
        android:background="@color/black"
        android:gravity="right"
        android:maxLines="1"
        android:minHeight="0dp"
        android:minWidth="0dp"
        android:text="Questions"
        android:textColor="@color/CornflowerBlue"
        android:textSize="16dp"></Button>
    

    【讨论】:

    • 果然。奇怪。为什么 Android 会插入这么多填充,以及为什么在 Button 而不是其他小部件?
    • 我猜是因为 Ux 问题。因为按钮被设计成可点击的..它们里面的可见文本..所以添加了默认填充。
    • 这是很多默认填充。
    猜你喜欢
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多