11

如果我想让我的 TextView 宽度完全等于其父级的宽度,我可以使用

android:layout_width="fill_parent"

如果我想让它成为零件宽度的一半怎么办?或者,一般来说,设置相对于父宽度的宽度?

编辑:我正在使用相对布局

我的屏幕是这样的。

我的屏幕是这样的。

4

6 回答 6

15

快速而肮脏的方式是这样的:

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="2">

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#ff0000"
            />

    </LinearLayout>

</RelativeLayout>

您必须将其包装在另一个容器中,然后仅使用父项重量总和的一半。

于 2013-03-10T09:42:32.743 回答
9

使用android:layout_weight="0.5"它将适用于linearLayout

<LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:weightSum="1"
                android:gravity="center"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/feedback"
                    android:layout_width="wrap_content"
                    android:layout_weight="0.5"
                    android:textSize="15pt" />
于 2013-03-10T09:19:41.413 回答
1

如果你想使用RelativeLayout,那么最好的方法是在屏幕中央放置一个虚拟视图,并将第一个视图放在虚拟视图的右侧,第二个放在虚拟视图的左侧,如下所示;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_contentt"
        android:background="#ff0000"
        android:layout_toLeftOf="@id/dummyView/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ff0000"
         android:layout_toRightOf="@id/dummyView"/>
     <View
        android:id="+@id/dummyView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="invisible"
        android:layout_centerInParent="true"/>

</RelativeLayout>
于 2014-12-22T14:21:24.693 回答
1

首先不要使用“fill_parent”,它是一个不推荐使用的眼泪,使用“match_parent”。

其次,您想将半父母TextView放在父母的哪里?

当您使用 RelativeLayout 时,此操作有点困难,请尝试从代码中执行此操作,如下所示:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
int myWidth = (int) (parentHeight * 0.5);
super.onMeasure(MeasureSpec.makeMeasureSpec(myWidth, MeasureSpec.EXACTLY),  
heightMeasureSpec);
}

参考: 如何根据父级的尺寸调整 Android 视图的大小

于 2013-03-10T09:22:11.533 回答
1

您可能需要设置 parent 的 weightSum LinearLayout,如下所示:-

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    android:padding="6dp"
    android:weightSum="2">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/hello"
        android:layout_weight="1" />

</LinearLayout>
于 2013-03-10T09:23:43.197 回答
0

像@rj 和@djhacktorreborn 建议的那样,用线性布局包装你的TextView,然后把整个东西放到一个相对布局中。

于 2013-03-10T09:30:37.413 回答