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 填充垂直部分TextViews 并将它们居中。为确保文本可见调用

.setEllipsize(TextUtils.TruncateAt.MARQUEE);
.setSingleLine(true);
.setMarqueeRepeatLimit(2);
.setSelected(true);

在你的 TextView 上使它们滚动。

这应该适用于具有所有类型屏幕的所有设备,但如果您想那样做,您也应该能够为小屏幕设计特殊类型的 xml。