【问题标题】:break long string into multiple pages [closed]将长字符串分成多页[关闭]
【发布时间】:2013-01-07 06:33:35
【问题描述】:

我正在尝试将一个长字符串显示到多个页面中。我的 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**         

    }

【问题讨论】:

标签: android


【解决方案1】:

我不会为您提供完整的解决方案,但我已经找到了可以帮助您的答案。

  1. First 帮助确定 TextView 宽度可以容纳多少个字符。
  2. Second 有助于获取 TextView 准确显示的行数。

但是换行有问题。您需要应用一些算法来找出 android 框架是如何包装文本的,或者为此执行此操作。这里是 good answer 用于文本换行

【讨论】:

  • 这很有帮助。我浏览了您共享的两个链接。我确信我可以使用它们来弄清楚我的 wya。但是,如果您可以澄清一个小问题。如何确定 android 用于 textview 的默认字体,或任何字体的像素宽度/高度。因为只有我才能知道字符的宽度/高度。
猜你喜欢
  • 2011-09-01
  • 2019-03-14
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多