右对齐和左对齐放置在表格行内的线性布局

时间:2013-03-07 03:42:40

标签: android

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/homeTableLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

<TableRow
    android:id="@+id/homeFirstRow"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dip" >

    <LinearLayout
        android:id="@+id/navigationLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:layout_marginLeft="10dp"
        android:background="#669cb7"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btnCall"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="@string/btn_call_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnPicture"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="@string/btn_take_pictures_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnNavigate"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="@string/btn_navigate_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnedo"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="@string/btn_pod_text"
            android:textSize="15sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/distanceLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:background="#FFC58F"
        android:gravity="center"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/tv"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="SOURCE TO DESTINATION COMES HERE" />

        <TextView
            android:id="@+id/txtFrom"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="" />

        <TextView
            android:id="@+id/txtTo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="" />

        <TextView
            android:id="@+id/txtETA"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="" />

        <TextView
            android:id="@+id/txtDistance"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/expandingLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_marginLeft="10dp"
        android:background="#FFC58F"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btnLanguage"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="@string/btn_language_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnImages"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="@string/btn_image_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnMessages"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="@string/btn_job_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnAlerts"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="@string/btn_alert_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnlogout"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="@string/btn_logout_text"
            android:textSize="15sp" />
    </LinearLayout>
</TableRow>

嗨上面是我对主屏幕的实现,我想左对齐第一个线性布局,中心对齐第二个布局,右对齐最后一个布局。任何人都知道如何做到这一点?

3 个答案:

答案 0 :(得分:2)

默认情况下,如果TableRow中的所有子项都可以在屏幕的边界内绘制,那么TableView将为每个LinearLayout子项分配相等的区域,它们将自动左对齐,居中和右对齐

在您的情况下,每个LinearLayouts都有4个或更多视图,其中一些文本难以适应屏幕范围。因此,TableLayout将仅从第一个孩子开始绘制适合屏幕的任何内容。

  1. 您可以尝试使用 LinearLayout with weightSum = 3而不是TableRow ,并为每个子LinearLayout赋予权重1。
  2. 此外,如果您确信所有文字都可以在屏幕上显示而且没有溢出屏幕的视图,请检查如果您的按钮具有默认的MinWidth并将其删除
  3. 使用重力(左,中,右)来控制内部布局相对于父级的位置。请注意,layout_gravity仅在父级是LinearLayout时才有效。
  4. 您也可以使用RelativeLayout,但如果您尝试将它们分别准确地放在左侧,中间和右侧,则内部LinearLayout可能会重叠。

    <LinearLayout android:orientation=horizontal
                  android:weightSum=3 >
        <LinearLayout android:layout_width=0dp 
                      android:layout_weight=1
                      android:layout_gravity=left >
        <LinearLayout android:layout_width=0dp 
                      android:layout_weight=1
                      android:layout_gravity=center >
        <LinearLayout android:layout_width=0dp 
                      android:layout_weight=1
                      android:layout_gravity=right >
    </LinearLayout>
    

答案 1 :(得分:0)

尝试使用权重和方向来达到你想要的效果。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/homeTableLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="10"
    android:orientation="horizontal"
     >

<LinearLayout
        android:id="@+id/navigationLayout"
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_gravity="left"
        android:background="#669cb7"
        android:orientation="vertical"
        android:layout_weight="3.3"

        >

        <Button
            android:id="@+id/btnCall"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:text="btn_call_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnPicture"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:text="btn_take_pictures_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnNavigate"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:text="btn_navigate_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnedo"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:text="btn_pod_text"
            android:textSize="15sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/distanceLayout"
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:background="#FFC58F"
        android:gravity="center"
        android:orientation="vertical"
        android:layout_weight="3.3" 
        >

        <TextView
            android:id="@+id/tv"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:text="SOURCE TO DESTINATION COMES HERE" />

        <TextView
            android:id="@+id/txtFrom"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:text="" />

        <TextView
            android:id="@+id/txtTo"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:text="" />

        <TextView
            android:id="@+id/txtETA"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:text="" />

        <TextView
            android:id="@+id/txtDistance"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:text="" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/expandingLayout"
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_gravity="right"
        android:background="#FFC58F"
        android:orientation="vertical"
        android:layout_weight="3.4" 
        >

        <Button
            android:id="@+id/btnLanguage"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="btn_language_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnImages"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="btn_image_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnMessages"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="btn_job_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnAlerts"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="btn_alert_text"
            android:textSize="15sp" />

        <Button
            android:id="@+id/btnlogout"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="btn_logout_text"
            android:textSize="15sp" />
    </LinearLayout>

</LinearLayout>

结果将是这样的:

enter image description here

答案 2 :(得分:0)

  1. 您确定所有这些按钮都适合一个屏幕吗?
  2. 您可以使用RelativeLayout作为3 linearlayouts的包装
  3. 或者您可以使用weightSum
  4. 的LinearLayout包装器
    <RelativeLayout>
    <LinearLayout android:layout_alignParentLeft="true">
    <LinearLayout android:layout_toRightOf="@id/linear1>
    <LinearLayout android:layout_toRightOf="@id/linear2 android:layout_alignParentRight="true">
    <RelativeLayout>