【问题标题】:Android positioning in linear layout线性布局中的Android定位
【发布时间】:2014-03-22 12:32:27
【问题描述】:

我有一个列表视图,每个条目都填充了 3 个文本视图和 1 个复选框。我希望文本视图彼此位于下方(就像它们一样),但我希望复选框出现在右侧而不是下方,我似乎无法开始工作。

这是列表视图中每个项目的 xml 代码,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" 
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:descendantFocusability="blocksDescendants">

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

  <TextView android:id="@+id/name"
  android:textSize="14sp" 
  android:textStyle="bold" 
  android:textColor="#000080" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"/>

</LinearLayout>
<TextView android:id="@+id/cityState" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/>
<TextView android:id="@+id/phone" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/>


       <CheckBox android:id="@+id/checkbox_bought"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/bought"/>

</LinearLayout>

您可以看到 TextView 名称位于它自己的水平线性布局中,因为我试图将复选框放在那里并使其显示在右侧,但这根本不起作用。有什么建议吗?

【问题讨论】:

    标签: android xml android-layout listview


    【解决方案1】:

    您可以拥有一个包含 TextView 的垂直方向的 LinearLayout,以及此 LinearLayout 右侧的复选框:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:descendantFocusability="blocksDescendants"
        android:orientation="horizontal"
        android:gravity="center" >
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="test1"
            android:textColor="#000080"
            android:textSize="14sp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/cityState"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="test2" />
    
        <TextView
            android:id="@+id/phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="test3" />
    
    
    </LinearLayout>
    
     <CheckBox
            android:id="@+id/checkbox_bought"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/bought" />
    

    【讨论】:

      【解决方案2】:

      为此使用 AbsoluteLayout。

           <AbsoluteLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
      
           <Paste your all  3 textviews and 1 checkbox >
      
           </AbsoluteLayout>
      

      如果你使用绝对布局,你可以很容易地用 x y 坐标进行排列。

      【讨论】:

      • AbsoluteLayout 已弃用。
      • 永远不要使用绝对布局。使用如此广泛的设备,您也许可以在一台设备上让所有内容看起来都正确,但在其他设备上就不是这样了。它被弃用是有充分理由的。