android:layout_above只适用于3个案例中的2个

时间:2014-04-10 19:14:49

标签: android xml

我试图用按钮创建三行,第一行和最后一行固定在屏幕的顶部和底部,中间的一行固定在中心垂直。

我可以使用android:layout_above将两个TextView修复到顶部和底部的按钮行 - 但是如果我尝试不同的设备屏幕,则中心文本视图显示在不通的地方并且会破坏布局。当我将问题 - 文本视图修复为中心 - 垂直时,效果是相同的。然后我的中间按钮线在不知名的地方,虽然我使用了android:layout_above。

我该怎么办?

谢谢你, 基督教

Screenshot

截图: https://www.dropbox.com/s/zx8zavn5k077th4/screen.jpg

我的XML:

<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="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<!-- 
1 
-->

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/pause"
    android:layout_alignLeft="@+id/play"
    android:text="1. Dialog abspielen"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
    android:id="@+id/play"
    style="@style/btnStyleShakespeare"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/record"
    android:layout_alignParentTop="true"
    android:layout_marginTop="38dp"
    android:layout_toLeftOf="@+id/pause" />

<Button
    android:id="@+id/pause"
    style="@style/btnStyleBeige"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/play"
    android:layout_alignTop="@+id/play"
    android:layout_toLeftOf="@+id/stopsol" />

<Button
    android:id="@+id/stop"
    style="@style/btnStyleOrange"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/stoprec"
    android:layout_alignRight="@+id/stopsol"
    android:layout_alignTop="@+id/pause" />

<!-- 
2 
-->

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/record"
    android:layout_alignLeft="@+id/record"
    android:text="2. Ihre Aufnahme"
    android:textAppearance="?android:attr/textAppearanceMedium" />


<Button
    android:id="@+id/record"
    style="@style/btnStyledark_khaki"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/stoprec"
    android:layout_alignParentLeft="true"
    android:layout_alignTop="@+id/stoprec"
    android:layout_toLeftOf="@+id/stoprec"
    android:layout_centerVertical="true" />

<Button
    android:id="@+id/stoprec"
    style="@style/btnStyleOrange"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/textView3"
    android:layout_alignRight="@+id/stopsol"
    android:layout_centerVertical="true"
    android:layout_toRightOf="@+id/paussol" />

<!-- 
3 
-->

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/playsol"
    android:layout_alignLeft="@+id/playsol"
    android:text="3. Aufnahme + Lösung abspielen"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
    android:id="@+id/playsol"
    style="@style/btnStyleShakespeare"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/stopsol"
    android:layout_alignTop="@+id/stopsol"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/paussol" />

<Button
    android:id="@+id/paussol"
    style="@style/btnStyleBeige"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/stopsol"
    android:layout_alignTop="@+id/stopsol"
    android:layout_centerHorizontal="true" />

<Button
    android:id="@+id/stopsol"
    style="@style/btnStyleOrange"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@+id/paussol" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

您的xml非常混乱,您应该在布局中组织项目。这是为您的第二个项目执行此操作的一种方法:

<!-- 2 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/stop"
android:orientation="vertical">

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="2. Ihre Aufnahme"
    android:textAppearance="?android:attr/textAppearanceMedium" />

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

    <Button
        android:id="@+id/record"
        style="@style/btnStyledark_khaki"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true" />

    <Button
        android:id="@+id/stoprec"
        style="@style/btnStyleOrange"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>