将嵌套的LinearLayouts转换为RelativeLayout - 忽略layout-above

时间:2013-11-15 04:14:45

标签: android android-layout relativelayout android-xml

所以我已经完成了Android应用程序的早期版本,并开始在各种设备上进行测试。我发现我的嵌套LinearLayouts不足以满足我的目的,所以我试图将嵌套的LinearLayouts转换为RelativeLayout。以下是我的出发点:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context=".LoginActivity">
<ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/backgroundhomescreen"
    android:scaleType="fitXY" />
<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_marginBottom="35dp">
    <LinearLayout
        android:orientation="vertical"
        android:padding="10dp">
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:paddingBottom="3dp"
            android:layout_marginBottom="10dp">
            <EditText
                android:id="@+id/login_txt_Username"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:background="@layout/textboxlogin"
                android:hint="Username or Email"
                android:inputType="textEmailAddress"
                android:scrollbars="none"
                android:textColor="#fff"
                android:textColorHint="#ddd" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:paddingBottom="3dp"
            android:paddingTop="3dp"
            android:layout_marginBottom="10dp">
            <EditText
                android:id="@+id/login_txt_Password"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:background="@layout/textboxlogin"
                android:hint="Password"
                android:inputType="textPassword"
                android:maxLines="1"
                android:textColorHint="#ddd" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:paddingBottom="3dp"
            android:paddingTop="3dp">
            <Button
                android:id="@+id/login_btn_submit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="SIGN IN"
                android:textColor="#fff"
                android:textSize="25dp"
                android:textStyle="bold"
                android:typeface="normal"
                android:background="@layout/buttonsigninbackground" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:paddingBottom="10dp"
            android:paddingTop="3dp">
            <TextView
                android:id="@+id/login_txt_or"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="- or -"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textSize="25dp"
                android:textStyle="bold" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:paddingBottom="15dp"
            android:paddingTop="3dp">
            <Button
                android:id="@+id/login_btn_navCreateAccount"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@layout/buttoncreateaccountbackground"
                android:text="CREATE AN ACCOUNT"
                android:textColor="#fff"
                android:textSize="25dp"
                android:textStyle="bold"
                android:typeface="normal" />
        </LinearLayout>
    </LinearLayout>
</TableLayout>
</RelativeLayout>

这是我到目前为止所遇到的问题,但有一些问题 - 即使在完成本教程之后 - Visual Guide to RelativeLayout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:context=".LoginActivity">
<ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/backgroundhomescreen"
    android:scaleType="fitXY" />
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <EditText
        android:id="@+id/login_txt_Username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:background="@layout/textboxlogin"
        android:hint="Username"
        android:layout_centerHorizontal="true"
        android:inputType="textEmailAddress"
        android:maxLines="1"
        android:scrollbars="none"
        android:textColor="#fff"
        android:textColorHint="#ddd" />
    <EditText
        android:id="@+id/login_txt_Password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:background="@layout/textboxlogin"
        android:hint="Password"
        android:layout_centerHorizontal="true"
        android:inputType="textPassword"
        android:maxLines="1"
        android:scrollbars="none"
        android:textColor="#fff"
        android:textColorHint="#ddd"
        android:layout_below="@id/login_txt_Username"
    />
    <Button
        android:id="@+id/login_btn_submit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:text="SIGN IN"
        android:layout_centerHorizontal="true"
        android:textColor="#fff"
        android:textSize="25dp"
        android:textStyle="bold"
        android:typeface="normal"
        android:background="@layout/buttonsigninbackground" />
    <TextView
        android:id="@+id/login_txt_or"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="- or -"
        android:layout_centerHorizontal="true"
        android:layout_above="@+id/login_btn_navCreateAccount"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="25dp"
        android:textStyle="bold" />
    <Button
        android:id="@id/login_btn_navCreateAccount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:background="@layout/buttoncreateaccountbackground"
        android:text="CREATE AN ACCOUNT"
        android:textColor="#fff"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="25dp"
        android:textSize="25dp"
        android:textStyle="bold"
        android:typeface="normal" />
</RelativeLayout>
</RelativeLayout>

最终我需要一个底部对齐的相对布局,以便我可以将其他视图放在上一个上方。在我上面的第二个代码示例中,似乎忽略了引用login_btn_navCreateAccount的textview“login_txt_or”。

为什么会这样?如果它有用,我在Xamarin Studio中使用Xamarin.Android 4.10.1。

1 个答案:

答案 0 :(得分:0)

这就是我最终的结果

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_login_relativeLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:src="@drawable/backgroundgameplaying"
    android:scaleType="fitXY" />
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="bottom"
    android:layout_marginBottom="45dp">
    <TextView
        android:id="@+id/login_tv_error"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="15dp"
        android:textColor="#f00" />
    <EditText
        android:id="@+id/login_txt_Username"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="25dp"
        android:background="@layout/textboxlogin"
        android:hint="Username"
        android:layout_centerHorizontal="true"
        android:inputType="textEmailAddress"
        android:maxLines="1"
        android:scrollbars="none"
        android:textColor="#fff"
        android:textColorHint="#ddd"
        android:layout_below="@id/login_tv_error" />
    <EditText
        android:id="@+id/login_txt_Password"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="25dp"
        android:background="@layout/textboxlogin"
        android:hint="Password"
        android:layout_centerHorizontal="true"
        android:inputType="textPassword"
        android:maxLines="1"
        android:scrollbars="none"
        android:textColor="#fff"
        android:textColorHint="#ddd"
        android:layout_below="@id/login_txt_Username" />
    <Button
        android:id="@+id/login_btn_submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/login_txt_Password"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="25dp"
        android:textColor="#fff"
        android:textSize="25dp"
        android:textStyle="bold"
        android:typeface="normal"
        android:background="@layout/buttonsigninbackground"
        android:text="SIGN IN" />
    <TextView
        android:id="@+id/loginTxtOr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/login_btn_submit"
        android:layout_centerHorizontal="true"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_marginBottom="25dp"
        android:textSize="25dp"
        android:textStyle="bold|italic"
        android:text="- or -" />
    <Button
        android:id="@+id/login_btn_navCreateAccount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_alignParentRight="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="25dp"
        android:layout_below="@id/loginTxtOr"
        android:background="@layout/buttoncreateaccountbackground"
        android:textColor="#fff"
        android:textSize="25dp"
        android:textStyle="bold"
        android:typeface="normal"
        android:text="CREATE AN ACCOUNT" />
</RelativeLayout>
</RelativeLayout>