繁体   English   中英

无法在Android 2.1 Eclair上包装TextView

[英]TextView not wrapping on Android 2.1 Eclair

我有一个包含大量文本的TextView问题。 在Android 2.1update1(Eclair)上,文字没有自动换行,但在Android 2.2(Froyo)上,文字自动换行。 这是在模拟器以及我尝试过的几个测试设备上发生的。 下面的示例代码和屏幕截图。

LongtextActivity.java:

package com.example.longtext;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ScrollView;
import android.widget.TextView;

public class LongtextActivity extends Activity {
    private static final String LONG_TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eleifend sodales vulputate. Aenean quis mattis tellus. Morbi fringilla sagittis turpis, scelerisque tempus velit molestie a. Suspendisse ut lectus nec nibh posuere commodo. Aliquam id purus eros. Quisque condimentum enim vitae odio ultricies posuere. Integer at lectus dolor. Etiam ultricies posuere neque, ut sagittis tellus tempus et. Aliquam vitae diam augue, vel vehicula tellus. Nullam dignissim magna luctus odio commodo cursus. Aenean magna justo, interdum in ultricies vitae, tincidunt at risus. Vivamus elit magna, sagittis a egestas non, suscipit a mi. Nam blandit, mauris nec adipiscing egestas, neque risus vestibulum lacus, eu iaculis lacus dui id sapien. Cras vitae nunc felis, sit amet fermentum est. Suspendisse dui ligula, sodales nec varius eget, cursus et urna. Ut eget turpis non lorem rutrum interdum. Morbi bibendum convallis adipiscing. Nam commodo, lectus lobortis feugiat ullamcorper, dui mi tincidunt tellus, a consectetur quam odio eget urna. Fusce adipiscing congue ipsum et luctus. Quisque nisi eros, porttitor nec tempor non, ultrices eget mi. Sed ac magna sit amet nulla facilisis porttitor non eget odio. Cras blandit tempus urna, quis molestie ante bibendum sit amet. Proin id cursus leo. Aenean malesuada bibendum turpis, in vehicula purus gravida sed. Suspendisse potenti. Curabitur dapibus, eros ut dapibus mattis, turpis nibh convallis nulla, et commodo nibh eros eu diam. Nunc nisl sem, rhoncus eget lobortis a, fringilla vel lorem. Curabitur vitae massa et est rhoncus dictum sit amet nec nisl. Maecenas id orci leo. Curabitur id auctor sapien. Praesent ac malesuada nunc. In leo libero, sollicitudin sed feugiat sit amet, feugiat non augue. Donec faucibus, augue vel rutrum scelerisque, sem erat posuere libero, vitae accumsan turpis justo vitae felis. Suspendisse bibendum auctor eros non semper. Sed in porta ipsum. Fusce ipsum mauris, porta eu sodales laoreet, suscipit ac urna. Etiam quam nunc, vestibulum a tempor dignissim, accumsan consequat lorem. Vivamus sed massa tortor. Curabitur odio ante, semper vitae sollicitudin eu, accumsan non sapien. Donec malesuada leo quis neque interdum at tristique nibh consequat. Suspendisse tincidunt dapibus elit et tincidunt. Sed ut massa eu ipsum imperdiet scelerisque dictum id ante. Duis iaculis congue purus, eu dictum risus varius ac. Pellentesque leo arcu, iaculis in eleifend in, elementum mollis augue. Donec vitae mi justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce ut nisi est, ut tempor ante. Donec nisi nisl, accumsan sed pellentesque et, pellentesque at ipsum. Ut in nibh ipsum. Morbi orci nisi, tempor eu accumsan ac, vehicula consectetur dui. Aenean accumsan leo vitae enim posuere vel commodo neque adipiscing. Sed felis odio, tempor quis convallis a, lacinia non metus. Maecenas euismod egestas arcu, sed luctus felis tincidunt eu. In mollis accumsan tellus venenatis dignissim. Quisque ultrices malesuada quam, at luctus est lobortis sed. Etiam aliquam est euismod mauris feugiat nec cursus sem ornare. Etiam molestie luctus dolor, nec laoreet lacus lacinia id. Fusce posuere aliquet orci quis tincidunt. Nunc fermentum tincidunt sollicitudin. Pellentesque et lacinia massa. Mauris id elit nisi. Donec et luctus nulla. Mauris pretium, ante sed porta ultrices, metus metus interdum risus, nec mollis quam elit et neque. Nulla sed sem sapien, eget feugiat nibh. Pellentesque ornare mollis dui, a porta turpis facilisis vel. Ut consequat interdum venenatis. Integer ac fermentum sapien. Fusce quis nulla eu leo pellentesque ornare ut a orci. Morbi id nibh sapien. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Morbi faucibus rhoncus sodales. Vivamus elit urna, ultricies ac dapibus non, congue quis arcu. Cras condimentum ipsum et nisl pellentesque eu cursus justo congue. Quisque vitae lacus ac sapien imperdiet ullamcorper. Duis ac est et felis pulvinar consequat porttitor ut massa. Nunc porttitor pharetra orci, non aliquam magna aliquam sit amet. Etiam non enim ut justo blandit congue et a nibh. Maecenas ac lorem at justo tempus vehicula at nec risus. Etiam venenatis semper lectus vel faucibus. Fusce nec sem at libero euismod laoreet quis vel dui.";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView bodyField = new TextView(this);
        // bodyField.setHorizontallyScrolling(false); No effect
        bodyField.setText(LONG_TEXT);

        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        layout.addView(bodyField, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

        ScrollView scrollView = new ScrollView(this);
        scrollView.setFillViewport(true);
        scrollView.addView(layout, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

        setContentView(scrollView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    }
}

屏幕截图:

小饼:

2.1模拟器截图

Froyo:

2.2模拟器截图

有什么想法可以在Eclair上完成这项工作吗? 我需要支持Eclair,并且需要我的申请。 提前致谢!

更新

由于我的实际应用程序需要极端的运行时自定义,因此我通常进行程序化UI生成,但是根据要求,这里是一个XML版本,它表现出相同的行为。 再次,我尝试了带有和不带有scrollHorizontally="false"属性的情况,没有区别。

longtext.xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
        <TextView
            android:id="@android:id/text1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scrollHorizontally="false" />
    </LinearLayout>
</ScrollView>

LongtextActivity.java:

package com.example.longtext;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ScrollView;
import android.widget.TextView;

public class LongtextActivity extends Activity {
    private static final String LONG_TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eleifend sodales vulputate. Aenean quis mattis tellus. Morbi fringilla sagittis turpis, scelerisque tempus velit molestie a. Suspendisse ut lectus nec nibh posuere commodo. Aliquam id purus eros. Quisque condimentum enim vitae odio ultricies posuere. Integer at lectus dolor. Etiam ultricies posuere neque, ut sagittis tellus tempus et. Aliquam vitae diam augue, vel vehicula tellus. Nullam dignissim magna luctus odio commodo cursus. Aenean magna justo, interdum in ultricies vitae, tincidunt at risus. Vivamus elit magna, sagittis a egestas non, suscipit a mi. Nam blandit, mauris nec adipiscing egestas, neque risus vestibulum lacus, eu iaculis lacus dui id sapien. Cras vitae nunc felis, sit amet fermentum est. Suspendisse dui ligula, sodales nec varius eget, cursus et urna. Ut eget turpis non lorem rutrum interdum. Morbi bibendum convallis adipiscing. Nam commodo, lectus lobortis feugiat ullamcorper, dui mi tincidunt tellus, a consectetur quam odio eget urna. Fusce adipiscing congue ipsum et luctus. Quisque nisi eros, porttitor nec tempor non, ultrices eget mi. Sed ac magna sit amet nulla facilisis porttitor non eget odio. Cras blandit tempus urna, quis molestie ante bibendum sit amet. Proin id cursus leo. Aenean malesuada bibendum turpis, in vehicula purus gravida sed. Suspendisse potenti. Curabitur dapibus, eros ut dapibus mattis, turpis nibh convallis nulla, et commodo nibh eros eu diam. Nunc nisl sem, rhoncus eget lobortis a, fringilla vel lorem. Curabitur vitae massa et est rhoncus dictum sit amet nec nisl. Maecenas id orci leo. Curabitur id auctor sapien. Praesent ac malesuada nunc. In leo libero, sollicitudin sed feugiat sit amet, feugiat non augue. Donec faucibus, augue vel rutrum scelerisque, sem erat posuere libero, vitae accumsan turpis justo vitae felis. Suspendisse bibendum auctor eros non semper. Sed in porta ipsum. Fusce ipsum mauris, porta eu sodales laoreet, suscipit ac urna. Etiam quam nunc, vestibulum a tempor dignissim, accumsan consequat lorem. Vivamus sed massa tortor. Curabitur odio ante, semper vitae sollicitudin eu, accumsan non sapien. Donec malesuada leo quis neque interdum at tristique nibh consequat. Suspendisse tincidunt dapibus elit et tincidunt. Sed ut massa eu ipsum imperdiet scelerisque dictum id ante. Duis iaculis congue purus, eu dictum risus varius ac. Pellentesque leo arcu, iaculis in eleifend in, elementum mollis augue. Donec vitae mi justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce ut nisi est, ut tempor ante. Donec nisi nisl, accumsan sed pellentesque et, pellentesque at ipsum. Ut in nibh ipsum. Morbi orci nisi, tempor eu accumsan ac, vehicula consectetur dui. Aenean accumsan leo vitae enim posuere vel commodo neque adipiscing. Sed felis odio, tempor quis convallis a, lacinia non metus. Maecenas euismod egestas arcu, sed luctus felis tincidunt eu. In mollis accumsan tellus venenatis dignissim. Quisque ultrices malesuada quam, at luctus est lobortis sed. Etiam aliquam est euismod mauris feugiat nec cursus sem ornare. Etiam molestie luctus dolor, nec laoreet lacus lacinia id. Fusce posuere aliquet orci quis tincidunt. Nunc fermentum tincidunt sollicitudin. Pellentesque et lacinia massa. Mauris id elit nisi. Donec et luctus nulla. Mauris pretium, ante sed porta ultrices, metus metus interdum risus, nec mollis quam elit et neque. Nulla sed sem sapien, eget feugiat nibh. Pellentesque ornare mollis dui, a porta turpis facilisis vel. Ut consequat interdum venenatis. Integer ac fermentum sapien. Fusce quis nulla eu leo pellentesque ornare ut a orci. Morbi id nibh sapien. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Morbi faucibus rhoncus sodales. Vivamus elit urna, ultricies ac dapibus non, congue quis arcu. Cras condimentum ipsum et nisl pellentesque eu cursus justo congue. Quisque vitae lacus ac sapien imperdiet ullamcorper. Duis ac est et felis pulvinar consequat porttitor ut massa. Nunc porttitor pharetra orci, non aliquam magna aliquam sit amet. Etiam non enim ut justo blandit congue et a nibh. Maecenas ac lorem at justo tempus vehicula at nec risus. Etiam venenatis semper lectus vel faucibus. Fusce nec sem at libero euismod laoreet quis vel dui.";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.longtext);
        TextView tv = (TextView) findViewById(android.R.id.text1);
        tv.setText(LONG_TEXT);
    }
}

我在一个应用程序上有类似的行为,但仅当它专门在Android 2.1_update1中运行时。 Android 1.5、1.6、2.2和2.3.3没有出现此问题。

必须在2.1_u1中对某些内容进行不同的设置,因为仅使用默认值不再起作用。 我必须明确设置属性。 要解决此问题,我设置了以下条件:

android:singleLine="false"
android:inputType="textMultiLine"
android:scrollHorizontally="false"

显然singleLine默认为false,但是inputType属性是完全指定的, singleLine默认为true。 我还将scrollHorizontally设置为false更多,以捕获未测试的scrollHorizontally情况,因为添加它可以解决其他问题。

设置使滚动时文本变暗的属性后,我产生了副作用,因此我还添加了以下两个属性来删除该行为:

android:clickable="false"
android:longClickable="false"

这个答案可能会有所帮助。

您必须在xml中设置android:scrollHorizo​​ntally =“ false”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM