TextView 没有在小屏幕三星设备上换行
TextView isn't wraping on small screen Samsung Devices
我在小屏幕 Samsung 设备上遇到文本换行问题。在S4等其他手机上一切正常
让我们看一下屏幕:
更正一个 (HTC Desire Z):
不正确(三星 S4 Mini):
我的 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/tool_bar"
layout="@layout/tool_bar"
android:layout_height="wrap_content"
android:layout_width="match_parent" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_launcher_web"
android:layout_marginRight="334dp"
android:layout_marginEnd="334dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_below="@+id/tool_bar" />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/Rel1"
android:layout_alignBottom="@+id/imageView"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true">
<TextView
android:maxLines="100"
android:scrollHorizontally="false"
android:singleLine="true"
android:ellipsize="end"
android:textSize="22sp"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:id="@+id/AppName"
android:layout_marginTop="130dp"
android:layout_marginRight="16dp" />
<TextView
android:textSize="18sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/created"
android:id="@+id/Created"
android:layout_gravity="center_horizontal"
android:layout_below="@+id/AppName"
android:layout_centerHorizontal="true" />
<TextView
android:textSize="22sp"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ms"
android:id="@+id/MS"
android:layout_gravity="center_horizontal"
android:layout_below="@id/Created"
android:layout_centerHorizontal="true" />
<TextView
android:textSize="20sp"
android:autoLink="web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/home_page"
android:id="@+id/textView"
android:layout_gravity="center_horizontal"
android:layout_below="@+id/MS"
android:layout_centerHorizontal="true" />
</RelativeLayout>
你能告诉我为什么会这样渲染吗?
对于初学者,你有这个属性,334dp 可能比整个显示器更宽:
android:layout_marginRight="334dp"
您的意思是像“34dp”这样更合理的东西吗?
放弃 Relative Layout
。不太适合这种布局。
使用水平 LinearLayout
作为主容器。将屏幕分成两部分,设置宽度和高度的 imageView
和宽度设置为 0dp 且 layout_weight
设置为 1 的另一个 LinearLayout
(垂直)。用 4 填充垂直部分TextView
s 并将它们居中。为确保文本可见调用
.setEllipsize(TextUtils.TruncateAt.MARQUEE);
.setSingleLine(true);
.setMarqueeRepeatLimit(2);
.setSelected(true);
在你的 TextView
上使它们滚动。
这应该适用于具有所有类型屏幕的所有设备,但如果您想那样做,您也应该能够为小屏幕设计特殊类型的 xml。
我在小屏幕 Samsung 设备上遇到文本换行问题。在S4等其他手机上一切正常
让我们看一下屏幕:
更正一个 (HTC Desire Z):
不正确(三星 S4 Mini):
我的 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/tool_bar"
layout="@layout/tool_bar"
android:layout_height="wrap_content"
android:layout_width="match_parent" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_launcher_web"
android:layout_marginRight="334dp"
android:layout_marginEnd="334dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_below="@+id/tool_bar" />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/Rel1"
android:layout_alignBottom="@+id/imageView"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true">
<TextView
android:maxLines="100"
android:scrollHorizontally="false"
android:singleLine="true"
android:ellipsize="end"
android:textSize="22sp"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:id="@+id/AppName"
android:layout_marginTop="130dp"
android:layout_marginRight="16dp" />
<TextView
android:textSize="18sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/created"
android:id="@+id/Created"
android:layout_gravity="center_horizontal"
android:layout_below="@+id/AppName"
android:layout_centerHorizontal="true" />
<TextView
android:textSize="22sp"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ms"
android:id="@+id/MS"
android:layout_gravity="center_horizontal"
android:layout_below="@id/Created"
android:layout_centerHorizontal="true" />
<TextView
android:textSize="20sp"
android:autoLink="web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/home_page"
android:id="@+id/textView"
android:layout_gravity="center_horizontal"
android:layout_below="@+id/MS"
android:layout_centerHorizontal="true" />
</RelativeLayout>
你能告诉我为什么会这样渲染吗?
对于初学者,你有这个属性,334dp 可能比整个显示器更宽:
android:layout_marginRight="334dp"
您的意思是像“34dp”这样更合理的东西吗?
放弃 Relative Layout
。不太适合这种布局。
使用水平 LinearLayout
作为主容器。将屏幕分成两部分,设置宽度和高度的 imageView
和宽度设置为 0dp 且 layout_weight
设置为 1 的另一个 LinearLayout
(垂直)。用 4 填充垂直部分TextView
s 并将它们居中。为确保文本可见调用
.setEllipsize(TextUtils.TruncateAt.MARQUEE);
.setSingleLine(true);
.setMarqueeRepeatLimit(2);
.setSelected(true);
在你的 TextView
上使它们滚动。
这应该适用于具有所有类型屏幕的所有设备,但如果您想那样做,您也应该能够为小屏幕设计特殊类型的 xml。