11

アプリの情報領域に、アプリの簡単な説明を表示したいと考えています。そのためには、多くのテキストを含むビューを作成する必要があります。そのためのベストプラクティスは何ですか? 実際には、Scrollview を使用して Linear Layout を作成しました。これにテキストを追加します。これには、アプリのバージョンなどの変数値も含まれている必要があります。しかし、それを行うためのより良い方法があるかどうかはわかりませんか?

これが私の現在のアプローチです:

 <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 を使用してフォーマットされた単純なスクロール可能なテキストを含む典型的な「About Screen」を探しているでしょう。

まず、これがレイアウト/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);
}

それが、アプリの About Screen を扱う方法です。申し訳ありませんが、この回答は少しやりすぎかもしれませんが、一般的に要求されるパターンだと思います。

于 2013-01-15T10:59:01.057 に答える
1

多くのテキストを表示するための標準化された方法はありません。それはあなたがそれをどのように見せたいかによります。ただし、多くの開発者はあなたと同じようにスクロールビューを使用します。テキストのみを表示している場合は、編集テキストではなくテキストビューを使用する必要があります。

ビューページャーなど、多くのテキストを表示する方法は他にもあります。

于 2013-01-15T10:50:29.593 に答える
1

子ビューが 1 つしかない場合、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

これを使って

 <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 に答える
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 に答える
0

あなたがしていることは完璧です。変更は必要ありません。ただし、子として ScrollView が 1 つしかない場合、最も外側の LinearLayout は意味がありません。それを除いて、すべてがまさにそれが行われるべき方法です。

于 2013-01-15T10:54:28.913 に答える