如何在每一侧使用TextViews正确设计LinearLayout?

时间:2014-11-28 18:32:49

标签: android user-interface textview android-linearlayout android-layout-weight

我正在尝试编写LinearLayout作为显示两个ListView的{​​{1}}的一部分。一个是银行帐户名称,另一个是余额。我希望帐户名称位于布局的左侧,余额位于右侧。

更具体地说,我希望余额对齐,左边的剩余空间将用于帐户名称,但我还没有弄清楚。我尝试使用布局权重,但它们不起作用。

以下是我的代码:

TextViews

但是会发生的是两个TextView都放在左侧,在右侧留下一堆空白区域。如何强制第二个TextView在右侧?

4 个答案:

答案 0 :(得分:2)

我一发布这个问题就找到了答案。感谢所有研究过这个问题的人,但问题是LinearLayout宽度是换行内容,所以它会将两个TextView包装在一起。通过将其更改为:

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

我能够使用布局权重来实现我想要的设计。

我也略微改变了布局重量,这就是我所拥有的:

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:id="@+id/accountNameTextView"
        android:layout_weight="1"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:textAppearanceSmall"
        android:id="@+id/accountBalanceTextView"
        android:gravity="center_vertical"/>
</LinearLayout>

答案 1 :(得分:0)

试试这段代码:

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/accountBalanceTextView"
    android:textSize="30sp"
    android:id="@+id/accountNameTextView"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:textAppearance="?android:textAppearanceSmall"
    android:id="@+id/accountBalanceTextView"
    />
</RelativeLayout>

答案 2 :(得分:0)

我建议您改用RelativeLayout。以下是有关如何在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"
    tools:context="${packageName}.${activityClass}" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="TextView" />

    <TextView
        android:id="@+id/gcmtv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/hello_world" />

</RelativeLayout>

但如果您需要使用LinearLayout执行此操作,则可以执行此类操作

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${packageName}.${activityClass}" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="TextView" />

    <TextView
        android:id="@+id/gcmtv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</LinearLayout>

答案 3 :(得分:0)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/LinearLayout1"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="horizontal"
 android:weightSum=2>

<TextView
    android:id="@+id/tv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="tv1" />

<TextView
    android:id="@+id/tv2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="@string/tv2" />

</LinearLayout>