如何将视图放置到不寻常的地方

时间:2014-01-10 16:05:16

标签: android xml android-layout layout margin

我需要在两个相等的垂直区域上划分屏幕,并且在43%的高度必须放置三个TextViews。一个在屏幕的左半部分,一个在右边,一个在中心。我做到了:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    <View android:id="@+id/fakeView"
        android:layout_width="0dp"
        android:layout_height="0dp" 
        android:layout_centerInParent="true"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="100"
        android:orientation="vertical"
        android:layout_alignRight="@id/fakeView"
        android:layout_alignParentLeft="true">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="43">
        </LinearLayout>
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="24" 
            android:gravity="center_vertical">
             <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="80"
                android:textSize="24sp"
                android:layout_alignParentRight="true"
                android:layout_marginRight="14dp"/>
        </RelativeLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="33" >
        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignLeft="@id/fakeView"
        android:layout_alignParentRight="true">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="43">
        </LinearLayout>
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="24" 
            android:gravity="center_vertical">
            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="80"
                android:textSize="24sp"
                android:layout_alignParentRight="true"
                android:layout_marginRight="14dp"/>
        </RelativeLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="33" >
        </LinearLayout>
    </LinearLayout>
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal ="true"
        android:textSize="24sp" />
</RelativeLayout>

这是一张可以解释我想要的图像:

enter image description here

总体而言,屏幕在其位置上分为左右TextViews(上边距为全球RelativeLayout的43%),但我不能将第三TextView放在中间位置, textView1textView2

我只有一个想法:
使用TextView2View.getHeight()以编程方式设置LayoutParams的上边距。但是在OnCreate活动已停止,我将无法使用此方法,直到活动已恢复。只有在Activity变为 Resumed 之后,我才能替换TextView2。我认为这是一个糟糕的方式。

P / S全球RelativeLayout只是屏幕的一小部分 P / SS此布局的左右部分将是可点击的,因此我无法绘制另一个LinearLayout空白布局以及下面的一个TextView,因为在这种情况下,左侧和右侧变得无法点击。

那么,如何在TextView2TextView1之间放置TextView3

1 个答案:

答案 0 :(得分:0)

看看这件事是否符合你的需要 它非常简单轻便,但我不会考虑百分比

结果如下:

enter image description here

xml是:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="0dp"
        android:orientation="horizontal"
        >
        <ImageView
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:background="#f00"
            android:layout_weight="1"
        />
        <ImageView
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:background="#00f"
            android:layout_weight="1"
        />
    </LinearLayout>
    <LinearLayout
        android:layout_width="240dp"
        android:layout_height="wrap_content"
        android:layout_margin="0dp"
        android:orientation="horizontal"
        android:layout_centerInParent="true"
        >
        <TextView
            android:id="@+id/txt1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:background="#00f"
            android:layout_weight="1"
        />
        <TextView
            android:id="@+id/txt2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:background="#f0f"
            android:layout_weight="1"
        />
        <TextView
            android:id="@+id/txt3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:background="#f00"
            android:layout_weight="1"
        />
    </LinearLayout>
</RelativeLayout>

并且在onCreate()中我有:

@Override
protected void onCreate(final Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    // Make this activity, full screen
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);

    // Hide the Title bar of this activity screen
    getWindow().requestFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.mannimar);
}

如果百分比必修,我会研究其他内容。

<强> [编辑]

好的,结果就是这样:

enter image description here

这是布局:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000"
    android:layout_margin="0dp"
    android:padding="0dp"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="0dp"
        android:orientation="horizontal"
        >
        <ImageView
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:background="#f00"
            android:layout_weight="1"
        />
        <ImageView
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:background="#00f"
            android:layout_weight="1"
        />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="0dp"
        android:orientation="vertical"
        android:gravity="center"
        >
        <!-- Spacewaster: Top -->
        <View
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:background="#0000"
            android:layout_weight="43"
        />
        <!-- The TextViews -->
        <LinearLayout
            android:layout_height="0dp"
            android:background="#0000"
            android:layout_width="240dp"
            android:layout_margin="0dp"
            android:orientation="horizontal"
            android:layout_weight="14"
            >
            <TextView
                android:id="@+id/txt1"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_margin="0dp"
                android:background="#00f"
                android:layout_weight="1"
            />
            <TextView
                android:id="@+id/txt2"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_margin="0dp"
                android:background="#f0f"
                android:layout_weight="1"
            />
            <TextView
                android:id="@+id/txt3"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_margin="0dp"
                android:background="#f00"
                android:layout_weight="1"
            />
        </LinearLayout>
        <!-- Spacewaster: Bottom -->
        <View
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:background="#0000"
            android:layout_weight="43"
        />
    </LinearLayout>
</RelativeLayout>

希望它有所帮助!