在Android中使EditText和Button高度相同

8
我有一个LinearLayout里面有一个EditText和一个Button,我想让它们紧密地对齐在一起,看起来像是一组(edittext + micButton用于语音输入)。
现在它们的高度不同,而且对齐得不好(Button似乎比EditText低一点)。我知道可以应用负边距,比如-5dp,使它们更加接近,但是也许有更好的方法吗?
将它们放在特定的容器/布局中,这样它们就会自动具有相同的高度,并且它们之间没有边距?
5个回答

1
使用相对布局,您可以根据其他视图的大小拉伸视图,而无需知道其他视图的确切大小。 以下是代码:
<RelativeLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >
<Button 
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:text="button"
    android:id="@+id/but"/>
<EditText 
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/but"
    android:layout_alignBottom="@id/but"
    android:layout_alignTop="@id/but"
    />
</RelativeLayout>

请查看此链接以减少视图之间的空间: https://groups.google.com/forum/?fromgroups#!topic/android-developers/RNfAxbqbTIk


1
我希望这个解决方案能够对您的情况有所帮助...以下是代码...

    <RelativeLayout
        android:id="@+id/rlLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:orientation="horizontal"
        android:padding="3dp" >

    <EditText
        android:id="@+id/etId"
        android:layout_width="fill_parent"
        android:layout_height="50dip"
        android:background="#c8c8c8"
        android:hint="Edittext"
        android:paddingLeft="20dip"
        android:paddingRight="10dip"
        android:textColor="#000000" />

    <RelativeLayout
        android:id="@+id/rlLayoutid"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignRight="@+id/etId" >

        <Button
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignParentRight="true"
            android:layout_marginRight="14dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/calender" />
    </RelativeLayout>
</RelativeLayout>


1
嗯,不知道为什么人们这么关注表格。由于两个视图都在LinearLayout中(假设方向为水平),因此此命令应将两者都居中于布局中:
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical" />

    </LinearLayout>

注意:由于EditText和Button可能会稍微不同地定位它们的文本,您可能需要进行一些调整(通过更改边距或填充)以使文本对齐正确。

0

@ Daniel,你可以使用布局权重和权重总和

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center"
        android:weight_sum=2    
        >
    <Button 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=1
        android:text="button"
        android:id="@+id/but"/>
    <EditText 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=1       
        />
    </LinearLayout>

-1

Android尝试自动将所有内容与文本而不是按钮本身对齐。

我花了很长时间才最终弄清楚。这真的很简单。应该可以解决它。

myButton.setGravity(Gravity.CENTER_VERTICAL);

或者如果它们在一行中... 将按钮附加到一个表格行中。

myTableRow.setGravity(Gravity.CENTER_VERTICAL);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接