开发者

Making EditText and Button same height in Android

开发者 https://www.devze.com 2023-01-11 23:07 出处:网络
I have an EditText and a Button in my LinearLayout and I want to align them closely together so they see seem to belong together (edittext + micButton for speech input).

I have an EditText and a Button in my LinearLayout and I want to align them closely together so they see seem to belong together (edittext + micButton for speech input).

Now they don't have the same height and they aren't really aligned well (Button seems to be a little lower than the EditText). I know I can apply a negative margin like -5dp to make them come closer together, but is there perhaps a better way to do this?

Set them in a specific container/layout so that they will automatically have the same height and no mar开发者_如何转开发gin between them?


Using relative layout you can stretch a view depending upon another views size without knowing the exact size of the other view. Here is the code :

<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>

Check this link for reducing space between views : https://groups.google.com/forum/?fromgroups#!topic/android-developers/RNfAxbqbTIk


Hmm, don't know why people bother so much with tables. Since the both Views are within a LinearLayout (presumable orientation=Horizontal), this command should center both within the layout:

    <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>

Note: Since EditTexts and Buttons may orient their text slightly differently, you may have to do some tweaking (by changing margins or padding) to get the text to align properly.


I hope this solution might help for your scenario...Here is the code..

    <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>


@ Daniel Here You can use layout weight and weight sum

<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>


Android tries to automatically level everything off of the text and not the buttons themselves.

Took me forever to finally figure it out. Its really simple. Should fix it.

myButton.setGravity(Gravity.CENTER_VERTICAL);

or if they are in a row.. attach the buttons to a table row, then.

myTableRow.setGravity(Gravity.CENTER_VERTICAL);
0

精彩评论

暂无评论...
验证码 换一张
取 消