11

在我的应用程序的信息区域中,我想显示我的应用程序的简要说明。为此,我需要创建一个包含大量文本的视图。最好的做法是什么?实际上我创建了一个带有滚动视图的线性布局,在此我将添加我的文本,其中还应该包含一些变量值,例如我的应用程序版本。但是不知道有没有更好的办法呢?

这是我目前的方法:

 <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>

有什么建议吗?

谢谢

4

6 回答 6

23

您可能正在寻找一个典型的“关于屏幕”,其中包含可以使用 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 格式的字符串,并用一些自动更新的信息来丰富它,比如你的版本号。

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);
}

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

于 2013-01-15T10:59:01.057 回答
1

没有标准的方式来显示大量文本。这取决于您希望它的外观。然而,很多开发人员会像你一样使用滚动视图。如果您只显示文本,您应该使用文本视图而不是您拥有的编辑文本。

还有其他方法可以显示大量文本,例如viewpager

于 2013-01-15T10:50:29.593 回答
1

当只有一个子 View 时,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>
于 2013-01-15T10:52:05.107 回答
1
<?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>   
于 2013-01-15T10:55:55.777 回答
1

用这个

 <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());

这是自动滚动文本视图。

于 2013-01-15T11:07:53.570 回答
0

你正在做的是完美的。无需更改。但是,如果只有一个 ScrollView 作为其子项,那么您最外层的 LinearLayout 就没有任何意义。除此之外,一切都正是它应该做的。

于 2013-01-15T10:54:28.913 回答