2013-08-17 33 views
0

我是Android开发的新手(事实上我今天已经下载了ADK),我想创建两列简单的设置页面。在第一列应该是文本,第二列应该是按钮/滑块/等。Android:两列(50%到50%)

我的问题是,当我使用LinearLayout时,只有全宽文本是可见的。列显示在文本右侧屏幕的“外部”。

这是屏幕的样子。

/-----------------\ 
| FULL WIDTH TEXT | 
|     | 
| Column1 Column2 | 
| Column1 Column2 | 
\-----------------/ 

还有就是我的XML文件的内容:

<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" 
tools:context=".MainActivity" 
android:weightSum="2" 
android:orientation="horizontal" 
> 

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

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:orientation="vertical" 
    android:visibility="visible" > 

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

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

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

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:orientation="vertical" 
    android:visibility="visible" > 

    <SeekBar 
     android:id="@+id/seekbar_motion_sensor_sensitivity" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout>  

如何设置内部布局要在TextView的底部画?感谢您的帮助。

回答

1

由于您的根线性布局具有水平方向的属性,因此第一个元素正在显示,并且下一个元素被推到屏幕的右侧,因此您的项目被设置在屏幕的右侧。为了解决这个问题,只需将属性改为垂直,你会发现你的内部布局将所有元素放在另一个之上,为了获得“两个”colums效果,你需要创建另一个水平布局在第一个文本视图之后,通过这种方式,你告诉inflater,第一个文本将被设置在水平列的顶部。就像建议一样,你想要做的事情可以简单地用TableLayout或RelativeLayout来完成,你应该看看它们...

关注!

+0

如果我将“android:orientation”根目录更改为“vertical”,我甚至不会在屏幕外看到内部布局的“蓝色边框”(它们可以用“水平”来显示)。 – Lorin

+1

呵呵,你太复杂了一个简单的设计,android的黄金规则之一是使用适当的布局,以满足您的需求,因为它可能会损失性能,过度创造视图,看看tablelayout,这将做到你想以一种极端简单的方式,http://www.mkyong.com/android/android-tablelayout-example/ –

+0

将根方向改为“水平”并在文本之后添加额外的LinearLayout后,它的工作原理非常好!谢谢。另一方面,你建议使用TableLayout。我已经读过TableLayout是专为需要处理不同大小的表格单元格的情况而设计的。这不是我的情况。这就是为什么我没有使用这个解决方案。你能给我一个使用RelativeLayout的例子吗?我在LinearLayout之前尝试了它,但是我发现每个示例都使用LinearLayout。 – Lorin