在Android视图中显示大文本数据的最佳做法?

在我的应用程序的信息区域中,我想显示我的应用程序的简要说明。 为此,我需要创build一个包含大量文本的视图。 那最好的做法是什么? 其实我创build了一个滚动视图的线性布局,在这里我将添加我的文本,其中也应该包含一些variables值,例如我的应用程序版本。 但我不知道是否有更好的方法来做到这一点?

这是我目前的做法:

<LinearLayout android:id="@+id/information_content" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@id/bottom_footer" android:layout_below="@id/top_header" android:layout_marginLeft="@dimen/marginLeft" android:layout_alignParentRight="true" android:layout_weight="1" android:orientation="vertical" > <ScrollView android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textMultiLine" android:text="Hallo das ist ein test!!! dsf" /> </LinearLayout> </ScrollView> </LinearLayout> 

任何build议?

谢谢

您可能正在寻找一个典型的“关于屏幕”与简单的可滚动文本,可以使用HTML格式。

首先,这是布局/layout/about_layout.xml 。 您不需要将视图封装在额外的LinearLayout中。

 <?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" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="12dp" > <TextView android:id="@+id/about_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> </ScrollView> 

之后,将以下内容添加到/values/strings.xml

 <string name="about_text"> <![CDATA[ Author: Your name<br/><br/>Your description text, changelog, licences etc... ]]> </string> 

最后,使用AboutActivity.java的布局,显示HTML格式的string,并使用一些自动更新的信息(比如您的版本号)来丰富它。

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.about_layout); String versionName = ""; try { PackageInfo pinfo = getPackageManager().getPackageInfo(getPackageName(), 0); versionName = pinfo.versionName; } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } TextView aboutTextView = (TextView) findViewById(R.id.about_text_view); aboutText = Html.fromHtml("<h1>Your App Name, Version " + versionName + "</h1>" + getString(R.string.about_text)); aboutTextView.setText(aboutText); } 

这就是我在我的应用程序中处理关于屏幕的方式。 对不起,这个答案可能有点过头了,但我认为这是一个普遍要求的模式。

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_height="wrap_content" android:layout_width="fill_parent"> <ScrollView android:id="@+id/ScrollView01" android:layout_height="150px" android:layout_width="fill_parent"> <TextView android:id="@+id/TEXT_VIEW" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header" /> </ScrollView> <EditText android:id="@+id/EDIT_TEXT" android:layout_height="70px" android:layout_width="fill_parent" android:layout_alignParentBottom="true" android:maxHeight="70px" /> </RelativeLayout> 

没有标准的方式来显示大量的文字。 这取决于你想如何看待。 但是很多开发者会像你一样使用滚动视图。 如果你只是显示文本,你应该使用textview而不是edittext。

还有其他的方式来显示大量的文本,如viewpager

只有一个子视图时,LinearLayouts不起作用。 当我想显示很多文本时,我使用了这个XML:

 <!-- Display the record details in a scrolling text view. --> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollview" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/[my drawable]" android:fillViewport="true" android:scrollbars="vertical" > <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/defaultDetail" /> </ScrollView> 

你在做什么是完美的。 没有需要改变。 但是,如果最外层的LinearLayout只有一个ScrollView作为它的子元素,那么它是没有意义的。 除此之外,一切都是如何完成的。

用这个

  <TextView android:id="@+id/text_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="false" android:scrollbars="vertical" android:textColor="#000" > </TextView> TextView textView = (TextView)findViewById(R.id.text_view); textView.setMovementMethod(ScrollingMovementMethod.getInstance()); 

这是自动滚动textview。