wrap_content不会调整字体的大小吗?

时间:2015-03-31 11:09:57

标签: java android android-layout android-linearlayout android-relativelayout

我的理解是wrap_content占用了内容所需的空间。但这不适用于TextViews吗?

在下面的布局中,为什么当我将id为real_status的TextView字体更改为24时,文本被部分隐藏?我期待由于包装内容的封闭TextView它将环绕24 sp并显示文本正常。 18sp很好。

布局:

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
    >

        <TextView
            android:id="@+id/real_status"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/full_display_name"
            android:layout_alignParentRight="true"
            android:layout_alignTop="@+id/full_display_name"
            android:gravity="center_vertical"
            android:textSize="24sp"
            android:textStyle="bold"
            tools:text="Active"
        />

        <TextView
            android:id="@+id/full_display_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@id/real_status"
            android:gravity="center_vertical"
            android:text="The real user status:"
            android:textSize="16sp"
        />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/full_display_name"
            android:gravity="right"
        >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:visibility="gone"
                tools:text="Just a text view"
                tools:visibility="visible" />
        </LinearLayout>

    </RelativeLayout>

</LinearLayout>  

使用18sp:enter image description here

使用24sp:enter image description here

更新
根据答案我删除了布局顶部/底部并调整了字体,但现在我看到TextView与下一个窗口小部件重叠。添加红色背景更加明显 我认为,通过“成长”TextView,其余部分将向下移动而不会重叠 enter image description here

3 个答案:

答案 0 :(得分:1)

每当你遇到这类问题时,如果你理解得很好,LiniarLayout就是最好的。因为wrap_content和match_parent在LiniarLayout中很容易处理。

让我们理解它。(对于你的情况).. 1.摄取两个LiniarLayout(父母有垂直方向..)      我为你的案件提供了Id LL1(水平)和id LL2

2.首先布局两个textview @ + id / full_display_name @ + id / real_status       在real_status中有match_parent的宽度,所以很容易划分parent(fill_parent)并设置它的android:gravity =“right”

3.LiniarLayout因为没有关系

请参阅belove XML code ...

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

    <LinearLayout
        android:id="@+id/LL1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/full_display_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="The real user status:"
            android:textSize="16sp" />

        <TextView
            android:id="@+id/real_status"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:text="Active"
            android:textSize="26sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/LL2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/real_status"
        android:gravity="right" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:text="Just a text view" />
    </LinearLayout>

</LinearLayout>

它将帮助您GUI在所有具有任何文本大小的设备中提供bestView

希望对您有所帮助

答案 1 :(得分:0)

是的wrap_content将占用视图所需的空间。它也适用于TextView。这里的问题是您将android:layout_alignBottom="@+id/full_display_name"写入real_status文本视图。此属性将覆盖wrap_content,因此请从文本视图中删除allignBottom属性。

<强>更新 对于底部线性布局更新行

android:layout_below="@+id/full_display_name"

android:layout_below="@+id/real_status"

答案 2 :(得分:0)

删除这两行将解决您的问题

android:layout_alignBottom="@+id/full_display_name"            
android:layout_alignTop="@+id/full_display_name"