2

長い文字列を複数のページに表示しようとしています。私のActivity.xmlには、画面の高さの90%を占めるテキストビューがあります(これは、相対レイアウトを設定したためです)。目的を達成するために使用できる適切なメソッド/クラスを見つけるのに助けが必要です

以下は私のコードです。太字の内容 (コード内の ** で始まるコメント) は、私が助けを必要としている場所です。

public class StoryActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_story);

    String contentString;
    String pageString;
    final int screenWidth;
    final int screenHeight;
   final int pageWidth;
   final int pageHeight;
   final int totalPages;
   int pageNumber;


    //load the content into the string contentString    
    InputStream is = getAssets().open("Story.txt");
        int size = is.available();
       byte[] buffer = new byte[size];
       is.read(buffer);
       is.close();
     contentString = new String(buffer);

           // get screen dimensions       
       DisplayMetrics dm = new DisplayMetrics();
       getWindowManager().getDefaultDisplay().getMetrics(dm);
       screenWidth = dm.widthPixels;
       screenHeight= dm.heightPixels;

       // create textview
       TextView tv = (TextView)findViewById(R.id.textViewStory);

             // calculate pageheight since textview size is 90% of the screen 
            pageHeight = (int) (0.9* screenHeight);
            pageWidth = screenWidth;

            **// 1)need to find number of lines which will fit pageHeight
            // 2)then I need to find total number of lines in my String contentString
            // 3)dividing 2) by 1) can give me number of pages required to display 
            // contentString. 
            // 4)I can then concatenate contentString at number of lines as found in 
            // 1) and thus I know what text (pageString) to display in page1**

            tv.setText(pageString); 

            **// steps 4) can be repeated to display next page when user click 
            // “nextpage” button**         

    }
4

1 に答える 1

2

私はあなたに完全な解決策を提供しませんが、私はあなたを助けることができる答えを見つけました。

  1. 最初に、TextViewの幅で何文字をフィートできるかを見つけるのに役立ちます。
  2. 2番目は、TextViewが正確に表示する行数を取得するのに役立ちます。

ただし、行の折り返しには問題があります。テキストがAndroidフレームワークによってどのようにラップされているかを調べるために、いくつかのアルゴリズムを適用するか、これを行う必要があります。これがテキストラッピングの良い答えです

于 2013-01-06T22:33:35.420 に答える