我们将从图片开始:
我希望电子邮件地址的TextView
和EditText
位于徽标下方,但不知何故它位于徽标之上。
我的布局:
<ScrollView 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.LoginActivity" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white_1" >
<!-- Header Starts-->
<LinearLayout
android:id="@+id/linear_layout_header_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/header_gradient"
android:paddingTop="5dip"
android:paddingBottom="5dip"
android:orientation="vertical" >
<!-- Logo Start-->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/hd_logo"
android:layout_marginLeft="10dip"
android:layout_marginStart="10dip"
android:contentDescription="@string/imgae_view_logo_content_description"
/>
</LinearLayout>
<!-- Logo Ends -->
<!-- Header Ends -->
<!-- Footer Start -->
<LinearLayout
android:id="@+id/linear_layout_footer_id"
android:layout_width="fill_parent"
android:layout_height="90dip"
android:orientation="vertical"
android:background="@drawable/header_gradient"
android:layout_alignParentBottom="true" >
</LinearLayout>
<!-- Footer Ends -->
<!-- Login Form -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dip" >
<!-- Email Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/black_1"
android:text="@string/login_page_email_text_view_text"
/>
<EditText
android:id="@+id/login_page_email_edit_text_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_marginBottom="20dip"
android:singleLine="true"
android:hint="@string/login_page_email_edit_text_hint"
android:inputType="textEmailAddress"
/>
<!-- Password Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#372c24"
android:text="@string/login_page_password_text_vuew_text"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:singleLine="true"
android:inputType="textPassword"
android:hint="@string/login_page_password_edit_text_hint"
/>
<!-- Login button -->
<Button
android:id="@+id/login_page_login_button_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="@string/login_page_login_button_text"
/>
<!-- Link to Registration Screen -->
<TextView
android:id="@+id/login_page_go_to_sign_up_page_text_view_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dip"
android:layout_marginBottom="20sp"
android:text="@string/login_page_go_to_sign_up_page_text_view_text"
android:gravity="center"
android:textSize="20sp"
android:textColor="#0b84aa"
/>
</LinearLayout>
<!-- Login Form Ends -->
</RelativeLayout>
</ScrollView>
我做错了什么?因为所有LinearLayout
方向都设置为垂直,所以为什么某些视图会在其他视图上对齐?
答案 0 :(得分:2)
你父亲的容器是一个RelativeLayout,所以孩子们必须以相对的方式定位&#34;&#34;彼此之间。例如:linear_layout_footer_id
应使用
linear_layout_header_id
下
android:layout_below="@id/linear_layout_header_id"
其他解决方案:将RelativeLayout替换为另一个具有垂直方向的LinearLayout
答案 1 :(得分:2)
由于您的父布局是相对的,因此您需要提供以下视图条件。这是使用xml的固定xml。
<ScrollView 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.LoginActivity" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white_1" >
<!-- Header Starts-->
<LinearLayout
android:id="@+id/linear_layout_header_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/header_gradient"
android:paddingTop="5dip"
android:paddingBottom="5dip"
android:orientation="vertical" >
<!-- Logo Start-->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/hd_logo"
android:layout_marginLeft="10dip"
android:layout_marginStart="10dip"
android:contentDescription="@string/imgae_view_logo_content_description"
/>
</LinearLayout>
<!-- Logo Ends -->
<!-- Header Ends -->
<!-- Footer Start -->
<LinearLayout
android:id="@+id/linear_layout_footer_id"
android:layout_width="fill_parent"
android:layout_height="90dip"
android:orientation="vertical"
android:background="@drawable/header_gradient"
android:layout_alignParentBottom="true" >
</LinearLayout>
<!-- Footer Ends -->
<!-- Login Form -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_below="@+id/linear_layout_header_id"
android:padding="10dip" >
<!-- Email Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/black_1"
android:text="@string/login_page_email_text_view_text"
/>
<EditText
android:id="@+id/login_page_email_edit_text_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_marginBottom="20dip"
android:singleLine="true"
android:hint="@string/login_page_email_edit_text_hint"
android:inputType="textEmailAddress"
/>
<!-- Password Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#372c24"
android:text="@string/login_page_password_text_vuew_text"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:singleLine="true"
android:inputType="textPassword"
android:hint="@string/login_page_password_edit_text_hint"
/>
<!-- Login button -->
<Button
android:id="@+id/login_page_login_button_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="@string/login_page_login_button_text"
/>
<!-- Link to Registration Screen -->
<TextView
android:id="@+id/login_page_go_to_sign_up_page_text_view_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dip"
android:layout_marginBottom="20sp"
android:text="@string/login_page_go_to_sign_up_page_text_view_text"
android:gravity="center"
android:textSize="20sp"
android:textColor="#0b84aa"
/>
</LinearLayout>
<!-- Login Form Ends -->
</RelativeLayout>
</ScrollView>
如您所见,现在您的登录表单已获得条件
机器人:layout_below = “@ + ID / linear_layout_header_id”
所以它会低于标题。
答案 2 :(得分:2)
添加此代码
android:layout_below="@+id/linear_layout_header_id"
到LinearLayout应该低于Logo
答案 3 :(得分:1)
将android:layout_below="@+id/linear_layout_header_id"
添加为
<!-- Login Form -->
<LinearLayout
android:layout_below="@+id/linear_layout_header_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dip" >
答案 4 :(得分:1)
请按以下方式更改您的文件:
<ScrollView 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.LoginActivity" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white_1" >
<!-- Header Starts-->
<LinearLayout
android:id="@+id/linear_layout_header_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/header_gradient"
android:paddingTop="5dip"
android:paddingBottom="5dip"
android:orientation="vertical" >
<!-- Logo Start-->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/hd_logo"
android:layout_marginLeft="10dip"
android:layout_marginStart="10dip"
android:contentDescription="@string/imgae_view_logo_content_description"
/>
</LinearLayout>
<!-- Logo Ends -->
<!-- Header Ends -->
<!-- Footer Start -->
<LinearLayout
android:id="@+id/linear_layout_footer_id"
android:layout_width="fill_parent"
android:layout_height="90dip"
android:orientation="vertical"
android:background="@drawable/header_gradient"
android:layout_alignParentBottom="true" >
</LinearLayout>
<!-- Footer Ends -->
<!-- Login Form -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dip" <!-- Because relative layout arranges all its childs in layer we have to make them separate -->
android:layout_below="@+id/linear_layout_footer_id">
<!-- Email Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/black_1"
android:text="@string/login_page_email_text_view_text"
/>
<EditText
android:id="@+id/login_page_email_edit_text_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_marginBottom="20dip"
android:singleLine="true"
android:hint="@string/login_page_email_edit_text_hint"
android:inputType="textEmailAddress"
/>
<!-- Password Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#372c24"
android:text="@string/login_page_password_text_vuew_text"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:singleLine="true"
android:inputType="textPassword"
android:hint="@string/login_page_password_edit_text_hint"
/>
<!-- Login button -->
<Button
android:id="@+id/login_page_login_button_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="@string/login_page_login_button_text"
/>
<!-- Link to Registration Screen -->
<TextView
android:id="@+id/login_page_go_to_sign_up_page_text_view_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dip"
android:layout_marginBottom="20sp"
android:text="@string/login_page_go_to_sign_up_page_text_view_text"
android:gravity="center"
android:textSize="20sp"
android:textColor="#0b84aa"
/>
</LinearLayout>
<!-- Login Form Ends -->
</RelativeLayout>
</ScrollView>
相对布局相对布置其所有布局。 如果您没有指定任何相对属性,那么它的所有子项都将重叠。
希望它会有所帮助。!!
答案 5 :(得分:1)
您正在LinerLayouts
中安排RelativeLayouts
,因此您需要确保LinearLayouts
相对于彼此。尝试添加属性android:layout_below
。