垂直布局不起作用

时间:2015-02-13 18:56:37

标签: android android-layout

我刚刚开始使用Android而我正在关注视频指南。 在视频中,每当他添加TextView时,它都会以垂直方式添加... 但对我来说,它将每个TextView一个添加到另一个之上......没有任何顺序。 这是我的初始代码:

    <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.thebasics.MainActivity" >

  <TextView
        android:id="@+id/textView2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="wassup" />
  <TextView
            android:id="@+id/textView3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="41dp"
            android:text="@string/hello_world" />

    </RelativeLayout>

我添加了android:orientation="vertical",但它没有用。我没有收到任何错误......它什么也没做。我仍然认为它将对象放在另一个上。

我该怎么做才能解决这个问题?我希望两个TextViews按垂直顺序排列。 我无法在其他地方找到答案,视频指南默认情况下得到了答案,所以如果它不起作用,他就不会解释该怎么做。

3 个答案:

答案 0 :(得分:1)

您需要使用LinearLayout作为根元素,而不是RelativeLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical" 
    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.thebasics.MainActivity" >

       

答案 1 :(得分:0)

android:orientation="vertical"适用于LinearLayouts,您使用的是RelativeLayout

如果您希望文本视图一个在另一个之上,只需用线性替换亲属并将方向设置为垂直:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    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.thebasics.MainActivity" >

<TextView
    android:id="@+id/textView2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="wassup" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dp"
    android:layout_marginTop="41dp"
    android:text="@string/hello_world" />

</LinearLayout>

答案 2 :(得分:0)

  

它将每个textView添加到另一个之上..没有任何类型的订单

实际上有一个订单。默认情况下,RelativeLayout会将Views置于左上方,以便它使用默认&#34;顺序&#34;,如果愿意的话。您需要使用RelativeLayout的不同布局属性来定位它们。

  

我添加了android:orientation =&#34; vertical&#34;

RelativeLayout没有orientation属性,因此无效。

  

我该怎么做才能解决这个问题?

您可以使用android:layout_below="@id/idOfAboveTV",但这可能很麻烦,除非您出于其他原因需要/ RelativeLayout

您可以将其更改为LinearLayout,因为LL的默认orientationhorizontal,只需添加android:orientation="vertical",您的Views就会被排除以垂直的方式。

注意:如果您使用LinearLayout,那么您需要删除一些View特定的RelativeLayout参数,例如android:layout_alignParentTop="true" }

指向有用文档的链接

RelativeLayout

Relative Layout Layout Params

LinearLayout

LinearLayout Layout Params