【问题标题】:wrap_content is not working in button height androidwrap_content 在按钮高度android中不起作用
【发布时间】:2013-12-21 14:25:25
【问题描述】:

“wrap_content”在我的按钮中不起作用,它目前看起来像这样:

 now                        want
 ____________
|            |           _____________
|   aaaaaa   |     =>   | aaaaaaaaaaa |
|____________|           -------------

以及我的按钮的 xml:

 <Button 
     android:layout_gravity="center"
     android:id="@+id/input_expend"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"                               
     android:textSize="12sp"
     android:text="aaaaaaa"                         
     android:background="@drawable/btn_01"/>
 <Button 
     android:layout_gravity="center"
     android:id="@+id/input_expend"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"                               
     android:textSize="12sp"
     android:text="aaaaaaa"                         
     android:background="@drawable/btn_02"/> 

我该如何解决这个问题? 谢谢!

【问题讨论】:

  • 也许你的drawable添加了额外的填充!
  • 另外,你的android:id= 对两个按钮都一样?

标签: android


【解决方案1】:

ButtonViewandroid:minHeight 属性设置为 48dip 默认值。您可以将minHeight 设置为低于实际文本“aaaaa”,例如 1dp。然后wrap_content 将起作用。但我不认为这是推荐的。

【讨论】:

  • 绝对不推荐。按钮具有 minHeight 和 minWidth 以使用户更容易触摸它并且不会错过它。它也应该总是有一个边距,所以用户不要点击它旁边的按钮。阅读材料设计指南。 material.io/guidelines/components/buttons.html#buttons-style
  • 您也应该尝试 btn.setMinHeight(0) 或 btn.setMinimumHeight(0),或两者兼而有之。
  • 你能指向Android文档中的按钮minHeight、minWidth吗?
  • 它对我有用。我认为将minHeightminWidth 设置为低于默认值一点就可以了。我将两个值都设置为 40dp 和 80dp。
【解决方案2】:

一种解决方案是将android:padding="@null" 添加到XML 中的按钮。这将覆盖正在强制执行的任何现有填充。

我还遇到了一个问题,即按钮不会缩小到小于默认按钮样式中定义的填充。我前段时间在my own question 中强调了这一点 但还没有解决它的答案。

【讨论】:

    【解决方案3】:

    更改背景不起作用,以及 padding="@null"。

    我最终使用了 TextView,因为我的按钮足够简单,足以满足需求:

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Join"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:padding="5dp"
            android:textSize="@dimen/xsmall_text_size"
            android:textColor="@drawable/button_text_selector"
            android:background="@color/turquoise"
            android:textStyle="bold"
            android:onClick="buttonOnClick"
            android:clickable="true"/>
    

    【讨论】:

      【解决方案4】:

      wrap_content 不会缩小比背景小的按钮。如果您已经使用九个补丁作为背景,则将区域的大小缩减到最小。如果没有渐变,那么您只需要大约两个像素来定义可拉伸区域,然后确保中心区域尽可能小。使用内边距(ninepatch 的右边和底线)来分配内边距。

      如果您使用的是可绘制图像(不是 9 补丁或 xml 可绘制图像),则将其设为可绘制 9 补丁的图像

      如果不想解决图片中的问题,则需要将layout_height设置为固定值,强制图片缩小(即不要使用wrap_content)

      【讨论】:

        【解决方案5】:

        背景添加了不需要的填充

        【讨论】:

          【解决方案6】:

          只添加 minHeight 不起作用。 您还需要将verticalPadding设置为0dp

          <Button
                  android:id="@+id/button1"
                  style="@style/Widget.MaterialComponents.Button.TextButton"
                  android:layout_gravity="center"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:minHeight="1dp"
                  android:paddingVertical="0dp"
                  android:textSize="14sp"
                  android:text="Login"/>
          

          【讨论】:

            猜你喜欢
            • 2017-11-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-11-16
            • 2019-09-04
            • 1970-01-01
            • 2011-08-23
            • 1970-01-01
            相关资源
            最近更新 更多