将按钮与editText对齐

时间:2014-08-19 09:04:07

标签: android android-layout android-edittext android-button android-relativelayout

我想将Button与EditText对齐。 更确切地说,我想将带有 id = signinButton的按钮与edittext对齐 id = passwordEditText。 editText有填充 =“8dp”。我想按钮是根据填充对齐的。 布局文件如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/nitos_background_color"
    tools:context="${packageName}.${activityClass}" >




         <EditText
              android:id="@+id/usernameEditText"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_marginLeft="15dp"
              android:layout_marginRight="15dp"
              android:layout_marginBottom="30dp"
              android:layout_marginTop="40dp"
              android:padding="8dp"
              android:ems="10"
              android:inputType="text" 
              android:hint="@string/username"
              android:background="#ffffff">
         <requestFocus />
        </EditText>





           <EditText
               android:id="@+id/passwordEditText"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:layout_below="@+id/usernameEditText"
               android:layout_marginRight="15dp"
               android:layout_marginBottom="28dp"
               android:padding="8dp"
               android:layout_alignLeft="@+id/usernameEditText"
               android:ems="10"
               android:inputType="textPassword" 
               android:hint="@string/password"
               android:background="@color/white_background"/>

               <Button
                android:id="@+id/signinButton"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/passwordEditText"
                android:layout_alignLeft="@+id/passwordEditText"
                android:layout_alignRight="@+id/passwordEditText"
                android:layout_marginBottom="20dp"
                android:text="@string/signin" />

             <CheckBox 
                 android:id="@+id/keep_me_signed_in_checkbox"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_below="@+id/signinButton"
                 android:layout_alignLeft="@+id/signinButton"
                 android:text="@string/keep_me_signed_in"
                 style="@style/CustomFontStyleText"
                 android:textSize="@dimen/checkbox_text_size"/>

  </RelativeLayout>      

最终屏幕为:

enter image description here

如您所见,该按钮与上述EditText不完全对齐。

3 个答案:

答案 0 :(得分:0)

试试这个..

该默认 Android Button背景,这就是为什么它显示为可以设置自定义背景的方式,如{{1转到EditText

Button

将正确显示。

答案 1 :(得分:0)

我认为这是因为默认按钮背景样式有内部填充(透明区域)。这些视图的帧正确对齐,但在视觉上存在差异。要解决此问题,您可以将按钮的layout_marginLeftlayout_marginRight属性设置为略微负值,例如-5dp并进行比较。或者指定一个没有透明区域的自定义按钮背景。

答案 2 :(得分:0)

我使用linearLayout解决了问题,如评论中提到的pratik。 解决方案:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/nitos_background_color" >

       <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="15dp" > 


        <EditText
              android:id="@+id/usernameEditText"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_marginTop="40dp"
              android:layout_marginBottom="30dp"
              android:padding="8dp"
              android:ems="10"
              android:inputType="text" 
              android:hint="@string/username"
              android:background="#ffffff">

           </EditText>


             <EditText
               android:id="@+id/passwordEditText"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:layout_marginBottom="30dp"
               android:padding="8dp"
               android:ems="10"
               android:inputType="textPassword" 
               android:hint="@string/password"
               android:background="@color/white_background"/>

               <Button
                android:id="@+id/signinButton"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dp"
                android:background="@color/light_blue_color"
                android:text="@string/signin" />

              <CheckBox 
                 android:id="@+id/keep_me_signed_in_checkbox"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/keep_me_signed_in"
                 style="@style/CustomFontStyleText"
                 android:textSize="@dimen/checkbox_text_size"/>



           <ImageView
               android:id="@+id/nitlabImageView"
               android:layout_width="230dp"
               android:layout_height="200dp"
               android:layout_gravity="center_horizontal"
               android:layout_marginTop="30dp"
               android:contentDescription="@string/nitlab_image"
               android:src="@drawable/nitlab_letters" />

</LinearLayout>
</ScrollView>

最终屏幕是:

enter image description here