【问题标题】:Android: Align views vertically leftAndroid:垂直左对齐视图
【发布时间】:2013-04-17 02:01:59
【问题描述】:

我正在尝试将一些文本视图垂直左对齐,但它不能正常工作,谁能指出我下面的代码有什么问题?

 <RelativeLayout
    android:id="@+id/footer"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity = "left"
    android:paddingTop="@dimen/top_spacing"
    android:paddingBottom="@dimen/bottom_spacing"
    android:orientation="vertical"
>
    <TextView
        android:id="@+id/Text1"
        style="@style/style1"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:layout_alignParentLeft="true"
        />

    <TextView
        android:id="@+id/Text2"
        style="@style/style1"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:layout_alignParentLeft="true"
        />

      <TextView
        android:id="@+id/Text3"
        style="@style/style1"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:layout_alignParentLeft="true"
        />
</RelativeLayout>

【问题讨论】:

  • 我假设 TextViews 在左上角相互叠放,对吗?
  • 是的,它们现在重叠了。

标签: android layout views alignment


【解决方案1】:

尝试以下方法:

 <RelativeLayout
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity = "left"
android:paddingTop="@dimen/top_spacing"
android:paddingBottom="@dimen/bottom_spacing"
android:orientation="vertical"
>
<TextView
    android:id="@+id/Text1"
    style="@style/style1"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:layout_alignParentLeft="true"
    />

<TextView
    android:id="@+id/Text2"
    style="@style/style1"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/Text1"
    />

  <TextView
    android:id="@+id/Text3"
    style="@style/style1"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/Text2"
    />

您从不设置layout_below 属性。如果您选择使用 RelativeLayout 或需要,此答案很有用,否则您可能最好使用 Neoh 和 Fahad Ishaque 的答案,它们几乎说的是同一件事。

【讨论】:

  • 啊,那是我错过的!谢谢!!
【解决方案2】:

最好为您的用例使用 LinearLayout:

<LinearLayout
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity = "left"
android:gravity="left"
android:paddingTop="@dimen/top_spacing"
android:paddingBottom="@dimen/bottom_spacing"
android:orientation="vertical">
<TextView
    android:id="@+id/Text1"
    style="@style/style1"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    />

<TextView
    android:id="@+id/Text2"
    style="@style/style1"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    />

  <TextView
    android:id="@+id/Text3"
    style="@style/style1"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    />
</LinearLayout>

【讨论】:

    【解决方案3】:

    相对布局替换为线性布局。您使用线性布局的所有属性,例如 orientation。并且请从文本视图中删除属于相对布局方案的必要标签。

    【讨论】:

    • 我最初尝试了线性布局,但它没有将视图对齐到父级的左侧。
    • 添加 layout_gravity 或简单的重力 = "left"。将此属性添加到布局中。
    • 我还想知道在这种特殊情况下使用线性布局比相对布局有什么好处?谢谢!
    • 没有我能想到的。如果您使用权重,您可以节省大量针对多个屏幕进行优化的时间。
    猜你喜欢
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    相关资源
    最近更新 更多