线性布局中的按钮layout_height = wrap_content的高度比wrap_content高得多

时间:2014-03-17 14:52:26

标签: android android-layout button android-linearlayout

我有使用TextView和Button的LinearLayout。我将layout_height属性设置为wrap_content,但layout_height的大小要大得多。如果我删除此按钮,那么一切都没问题。我尝试减少按钮文本大小,但按钮的框架仍然相同。我不想要硬编码按钮大小。这个奇怪的结果可能是什么原因?

 <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:weightSum="1" >

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginLeft="@dimen/left_margin"
                    android:layout_marginTop="@dimen/top_margin"
                    android:layout_weight=".3"
                    android:text="@string/contact" />

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="0.7"
                    android:layout_marginLeft="@dimen/left_margin"
                    android:layout_marginTop="@dimen/top_margin"
                    android:orientation="horizontal"
                    android:weightSum="1" >

                    <TextView
                        android:id="@+id/contact"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent" 
                        android:gravity="center_vertical"/>

                    <Button
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"                                                                
                        android:text="@string/contact" android:textSize="@dimen/button_font_size"/>

                </LinearLayout> 

3 个答案:

答案 0 :(得分:3)

Button具有背景和其他布局属性,似乎无法降低其高度。一个选项是使用带有自定义样式的TextView并处理点击事件,使其行为类似于Button

示例:

<TextView
    android:layout_height="wrap_content"
    android:background="#ddd"
    android:padding="6dp"
    android:layout_width="wrap_content"
    android:text="Contact" />

它需要一些工作和时间来正确设置TextView的样式,但是如果你别无选择,它可能会为你做到这一点。

答案 1 :(得分:1)

我在使用按钮时也有这个问题,你可以手动设置高度和宽度,但我还没有找到一种方法来减少wrap_content的大小。

android:layout_width="40dp"
android:layout_height="30dp"

答案 2 :(得分:0)

这是因为按钮的最小高度。设置android:minHeight="1dp"或任何其他尺寸即可实现。