0

Так что я пытаюсь сделать простую активность регистрации, но мои представления выровнены не так, как ожидалось.TextViews и EdidText не соответствуют требованиям

XML:

<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:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.mylifeinformationsharedsocial.SignUpActivity" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/username_id" 
    android:text="@string/username_text" 
    android:textSize="20sp" 
    /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/username_edit_text_id" 
    android:hint="@string/username_hint_texts" 
    android:layout_toRightOf="@id/username_id" 
    android:layout_toEndOf="@id/username_id" 
    /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/password_id" 
    android:text="@string/password_text" 
    android:textSize="20sp" 
    android:layout_below="@id/username_edit_text_id" 
    /> 

<EditText 
    android:id="@+id/password_edit_text_id" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPassword" 
    android:hint="@string/passworde_hint_texts" 
    android:layout_toRightOf="@id/password_id" 
    android:layout_toEndOf="@id/password_id" 
    android:layout_below="@id/username_edit_text_id" 
    /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/email_id" 
    android:text="@string/email_text" 
    android:textSize="20sp" 
    android:layout_below="@id/password_id" 
    /> 

<EditText 
    android:id="@+id/email_edit_text_id" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textEmailAddress" 
    android:hint="@string/email_hint_text" 
    android:layout_toRightOf="@id/email_id" 
    android:layout_toEndOf="@id/email_id" 
    android:layout_below="@id/password_edit_text_id" 
    /> 

<Button 
    android:id="@+id/sign_up_button_id" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/sign_up_button_text" 
    android:layout_below="@id/email_id" 
    /> 

Графический макет:

enter image description here

Я не могу показаться, чтобы найти, что случилось с ним. Любая помощь будет очень оценена. Проблема с электронной почтой вниз, как показано на рис. Его симпатичный прорыв вперед, но, видимо, нет.

+1

Используйте LinearLayout для лучшего выравнивания. –

+0

@Rubanraj Я знал, что этот ответ наступит HAHA. Я хочу сделать это с относительной компоновкой. – God

+1

Спасибо, приятель .. :-) ты меня ... @God –

ответ

1

Ваш password_text заявлен как ниже username_edit_text_id, тогда как он хочет быть ниже username_id.

Android принимает все спецификации, которые вы ему даете, и делает все возможное, чтобы делать то, что вы просили, но если спецификации противоречат друг другу или невозможно удовлетворить, тогда это выйдет неправильно.

+0

Это не помогло, но ты был прав. Я думаю, я не могу сделать это с относительной компоновкой. Я переключусь на LineaLayout. Благодарю. – God

1

Может быть, вы могли бы попробовать это так:

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/username_id" 
    android:text="@string/username_text" 
    android:textSize="20sp" 
    /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/username_edit_text_id" 
    android:hint="@string/username_hint_texts" 
    android:layout_toRightOf="@id/username_id" 
    android:layout_toEndOf="@id/username_id" 
    /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/password_id" 
    android:text="@string/password_text" 
    android:textSize="20sp" 
    android:layout_below="@id/username_edit_text_id" 
    /> 

<EditText 
    android:id="@+id/password_edit_text_id" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPassword" 
    android:hint="@string/passworde_hint_texts" 
    android:alignRight = "@id/username_edit_text_id" 
    android:layout_below="@id/username_edit_text_id" 
    /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/email_id" 
    android:text="@string/email_text" 
    android:textSize="20sp" 
    android:layout_below="@id/password_id" 
    /> 

<EditText 
    android:id="@+id/email_edit_text_id" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textEmailAddress" 
    android:hint="@string/email_hint_text" 
    android:alignRight = "@id/password_edit_text_id" 
    android:layout_below="@id/password_edit_text_id" 
    /> 

<Button 
    android:id="@+id/sign_up_button_id" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/sign_up_button_text" 
    android:layout_below="@id/email_id" 
    /> 

Вместо использования toRightOf я alignRight так все EditText бы правильно выровнена.

Это будет хорошо работать для вашего случая (если у вас есть только эти строки), в противном случае вы должны выровнять все EditText с правой стороны.