我的理解是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:
使用24sp:
更新
根据答案我删除了布局顶部/底部并调整了字体,但现在我看到TextView与下一个窗口小部件重叠。添加红色背景更加明显
我认为,通过“成长”TextView,其余部分将向下移动而不会重叠
答案 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"