我遇到了一个包含大量文本的TextView的问题。在Android 2.1update1(Eclair)上,文本并未打包,而是在Android 2.2(Froyo)上。这发生在模拟器以及我试过的一对测试设备上。下面的示例代码和屏幕截图。TextView不包装在Android 2.1 Eclair
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));
}
}
截图:
Eclair的:
的Froyo:
任何想法,我可以如何使这项工作在埃克莱尔?我需要支持Eclair和我的申请。提前致谢!
UPDATE
我通常做的纲领性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);
}
}
这完全奏效。谢谢!旁注:当以编程方式构建用户界面时,您可以执行等效的'bodyField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE); bodyField.setSingleLine(假); bodyField.setHorizontalScrolling(false);'这种方式没有可点击文本的问题。 – 2011-03-02 18:18:29
很高兴知道,谢谢。 – codelark 2011-03-02 19:47:43