Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android的RelativeLayout中从底部和顶部定位视图_Android_Android Layout_Android Relativelayout - Fatal编程技术网

在Android的RelativeLayout中从底部和顶部定位视图

在Android的RelativeLayout中从底部和顶部定位视图,android,android-layout,android-relativelayout,Android,Android Layout,Android Relativelayout,我有一个非常简单的布局,有两个文本视图一个在另一个下面,在这些文本视图下面,我有三个水平对齐的图像视图 我能够相对地放置这些视图时,设置位置低于对方,并指定了上边缘。但是对于三个图像视图,我希望能够从屏幕底部设置边距。不幸的是,我无法使用RelativeLayout实现这一点 我想问专家们,这是否可能?我是否需要以下是我的布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xm

我有一个非常简单的布局,有两个
文本视图
一个在另一个下面,在这些
文本视图
下面,我有三个水平对齐的
图像视图

我能够相对地放置这些视图时,设置位置低于对方,并指定了上边缘。但是对于三个
图像视图
,我希望能够从屏幕底部设置边距。不幸的是,我无法使用
RelativeLayout
实现这一点

我想问专家们,这是否可能?我是否需要以下是我的布局:

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:id="@+id/layoutMain"
    tools:context=".MainActivity$PlaceholderFragment">

    <TextView android:id="@+id/section_label" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="300sp"
        android:layout_height="300sp"
        android:textSize="250sp"
        android:textStyle="bold"
        android:textColor="@android:color/black"
        android:textAlignment="center"
        android:gravity="center"
        android:id="@+id/imgItem"
        android:layout_marginTop="2sp"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="35sp"
        android:textStyle="bold"
        android:textColor="@android:color/black"
        android:textAlignment="center"
        android:gravity="center"
        android:text="Large Text"
        android:id="@+id/txtItemSmall"
        android:layout_below="@+id/imgItem"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10sp" />

    <View
        android:layout_width="match_parent"
        android:id="@+id/dividerTop"
        android:alpha="0.5"
        android:layout_height="3dp"
        android:background="@android:color/black"
        android:layout_below="@id/imgItem"
        android:layout_marginTop="115sp"/>

    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:layout_marginTop="10sp"
        android:id="@+id/btnRandom"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/dividerTop"
        android:src="@drawable/ic_random"/>

    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:layout_marginTop="10sp"
        android:layout_marginRight="50sp"
        android:id="@+id/btnPrevious"
        android:layout_below="@id/dividerTop"
        android:layout_toLeftOf="@id/btnRandom"
        android:src="@drawable/ic_previous"/>

    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:layout_marginTop="10sp"
        android:layout_marginLeft="50sp"
        android:id="@+id/btnNext"
        android:layout_below="@id/dividerTop"
        android:layout_toRightOf="@id/btnRandom"
        android:src="@drawable/ic_next"/>

    <View
        android:layout_width="match_parent"
        android:id="@+id/dividerBottom"
        android:alpha="0.5"
        android:layout_height="3dp"
        android:background="@android:color/black"
        android:layout_below="@id/btnRandom"
        android:layout_marginTop="10sp"/>

</RelativeLayout>

将三个图像视图包装在水平线性布局内,将线性布局与底部父视图对齐,并将边距设置为底部

 <RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="64sp"
  android:layout_marginTop="10dp"
  android:layout_below="@id/dividerTop"
  android:layout_alignParentBottom="true"
  android:layout_marginbottom="50dp" > <-- your own offset from bottom --!>

    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:id="@+id/btnRandom"
        android:layout_centerHorizontal="true"
        android:src="@drawable/ic_random"/>

    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:layout_marginRight="50sp"
        android:id="@+id/btnPrevious"
        android:layout_toLeftOf="@id/btnRandom"
        android:src="@drawable/ic_previous"/>

    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:layout_marginLeft="50sp"
        android:id="@+id/btnNext"
        android:layout_toRightOf="@id/btnRandom"
        android:src="@drawable/ic_next"/>

 </RelativeLayout>

您可以使用线性布局或相对布局来包装图像视图。然后使用
android:layout\u alignParentBottom=“true”


你可以这样做

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layoutMain"
    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=".MainActivity$PlaceholderFragment">

    <TextView
        android:id="@+id/section_label"
        android:layout_width="wrap_content"
        android:text="Hiii"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/imgItem"
        android:layout_width="300sp"
        android:layout_height="300sp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="2sp"
        android:gravity="center"
        android:textAlignment="center"
        android:text="Hiiii2"
        android:textColor="@android:color/black"
        android:textSize="250sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/txtItemSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/imgItem"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10sp"
        android:gravity="center"
        android:text="Large Text"
        android:textAlignment="center"
        android:textColor="@android:color/black"
        android:textSize="35sp"
        android:textStyle="bold" />

    <View
        android:id="@+id/dividerTop"
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:layout_above="@id/btnRandom"
        android:alpha="0.5"
        android:background="@android:color/black" />

    <ImageView
        android:id="@+id/btnRandom"
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:layout_above="@id/dividerBottom"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="10dp"
        android:alpha="0.5"
        android:src="@drawable/ic_random" />

    <ImageView
        android:id="@+id/btnPrevious"
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:layout_above="@id/dividerBottom"
        android:layout_marginRight="50sp"
        android:layout_marginBottom="10dp"
        android:layout_toLeftOf="@id/btnRandom"
        android:alpha="0.5"
        android:src="@drawable/ic_previous" />

    <ImageView
        android:id="@+id/btnNext"
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:layout_above="@id/dividerBottom"
        android:layout_marginLeft="50sp"
        android:layout_marginBottom="10dp"
        android:layout_toRightOf="@id/btnRandom"
        android:alpha="0.5"
        android:src="@drawable/ic_next" />

    <View
        android:id="@+id/dividerBottom"
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:layout_alignParentBottom="true"
        android:alpha="0.5"
        android:background="@android:color/black" />

</RelativeLayout>


并使用dp而不是sp作为利润。

最终我明白了。视图需要按照您希望从底部定位的顺序添加,并且不能按照它们在屏幕上显示的顺序添加。以下是更新后的布局,工作完全符合预期

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:id="@+id/layoutMain"
    tools:context=".MainActivity$PlaceholderFragment">

    <TextView android:id="@+id/section_label" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="300sp"
        android:layout_height="300sp"
        android:textSize="250sp"
        android:textStyle="bold"
        android:textColor="@android:color/black"
        android:textAlignment="center"
        android:gravity="center"
        android:id="@+id/imgItem"
        android:layout_marginTop="2sp"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="35sp"
        android:textStyle="bold"
        android:textColor="@android:color/black"
        android:textAlignment="center"
        android:gravity="center"
        android:text="Large Text"
        android:id="@+id/txtItemSmall"
        android:layout_below="@+id/imgItem"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10sp" />



    <View
        android:id="@+id/dividerBottom"
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="70sp"
        android:alpha="0.5"
        android:background="@android:color/black" />



    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:id="@+id/btnRandom"
        android:layout_centerHorizontal="true"
        android:layout_above="@id/dividerBottom"
        android:layout_marginBottom="10sp"
        android:src="@drawable/ic_random"/>

    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:layout_marginRight="50sp"
        android:id="@+id/btnPrevious"
        android:layout_above="@id/dividerBottom"
        android:layout_marginBottom="10sp"
        android:layout_toLeftOf="@id/btnRandom"
        android:src="@drawable/ic_previous"/>

    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:layout_marginLeft="50sp"
        android:id="@+id/btnNext"
        android:layout_above="@id/dividerBottom"
        android:layout_marginBottom="10sp"
        android:layout_toRightOf="@id/btnRandom"
        android:src="@drawable/ic_next"/>

    <View
        android:layout_width="match_parent"
        android:id="@+id/dividerTop"
        android:alpha="0.5"
        android:layout_height="3dp"
        android:background="@android:color/black"
        android:layout_above="@id/btnRandom"
        android:layout_marginBottom="10sp" />

</RelativeLayout>


您的边距单位错误,您使用的是缩放点(sp)而不是与密度无关的像素(dp)。您可以在图像视图上尝试“alignParentBottom=true”。我已经尝试过了,但由于找不到ID而出现了错误。现在已修复,并已在下面作为答案发布
<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:id="@+id/layoutMain"
    tools:context=".MainActivity$PlaceholderFragment">

    <TextView android:id="@+id/section_label" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="300sp"
        android:layout_height="300sp"
        android:textSize="250sp"
        android:textStyle="bold"
        android:textColor="@android:color/black"
        android:textAlignment="center"
        android:gravity="center"
        android:id="@+id/imgItem"
        android:layout_marginTop="2sp"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="35sp"
        android:textStyle="bold"
        android:textColor="@android:color/black"
        android:textAlignment="center"
        android:gravity="center"
        android:text="Large Text"
        android:id="@+id/txtItemSmall"
        android:layout_below="@+id/imgItem"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10sp" />



    <View
        android:id="@+id/dividerBottom"
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="70sp"
        android:alpha="0.5"
        android:background="@android:color/black" />



    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:id="@+id/btnRandom"
        android:layout_centerHorizontal="true"
        android:layout_above="@id/dividerBottom"
        android:layout_marginBottom="10sp"
        android:src="@drawable/ic_random"/>

    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:layout_marginRight="50sp"
        android:id="@+id/btnPrevious"
        android:layout_above="@id/dividerBottom"
        android:layout_marginBottom="10sp"
        android:layout_toLeftOf="@id/btnRandom"
        android:src="@drawable/ic_previous"/>

    <ImageView
        android:layout_width="64sp"
        android:layout_height="64sp"
        android:alpha="0.5"
        android:layout_marginLeft="50sp"
        android:id="@+id/btnNext"
        android:layout_above="@id/dividerBottom"
        android:layout_marginBottom="10sp"
        android:layout_toRightOf="@id/btnRandom"
        android:src="@drawable/ic_next"/>

    <View
        android:layout_width="match_parent"
        android:id="@+id/dividerTop"
        android:alpha="0.5"
        android:layout_height="3dp"
        android:background="@android:color/black"
        android:layout_above="@id/btnRandom"
        android:layout_marginBottom="10sp" />

</RelativeLayout>