如何在ScrollView中拥有多个段落? XML

时间:2011-06-23 23:05:52

标签: android

我试图在屏幕上用xml简单地放几段,你可以垂直滚动,因为它们太大而无法全部看到。我尝试过很多不同的东西,但无法弄明白。

3 个答案:

答案 0 :(得分:1)

将文本视图嵌入到线性布局中,并在顶部和底部为它们添加一些填充。要么是这样,要么将文本组合成一个文本字符串并用\n分隔。

如果您尝试将多个textview添加到一个scrollview中,它将无法正常工作。 scrollview容器只能有一个子节点,这就是您需要将textviews放入线性布局,然后将该线性布局放入scrollview的原因。

示例:

<ScrollView>
   <LinearLayout>
      <TextView text=R.string.MyText1 />
      <TextView text=R.string.MyText2 />
      <TextView text=R.string.MyText3 />
   </LinearLayout>
</ScrollView>

R.string.MyText将您的段落全部复制并粘贴到您的字符串资源文件中,其中包含“MyText1”,“MyText2”,“MyText3”等键。

答案 1 :(得分:1)

我正在补充约翰上面所说的话。您希望在scrollview中使用linearlayout来实现此目的。

如下所示:

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:orientation="vertical">
       <TextView
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:text="Paragraph 1\n\nParagraph2\n\nParagraph 3"/>
   </LinearLayout>
</ScrollView>

此外,发布到目前为止您尝试过的内容可以让我们更好地帮助您。帮助我们帮助您!

答案 2 :(得分:0)

1-将要阅读的文章放在.txt文件中 2-把它放在资产文件夹中 3-将其添加到您的activity.xml

 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:id="@+id/textView2"
        android:maxLines = "10"
        android:scrollbars = "vertical"/>

4-并将其设置为活动

中的TextView
 TextView txtvue = (TextView) findViewById(R.id.textView2);
        txtvue.setMovementMethod(new ScrollingMovementMethod());
        txtvue.setText( myReader("your.txt"));

5-从.txt文件中获取段落使用此功能

 public String myReader(String fileName) {
        AssetManager assetManager = getResources().getAssets();
        InputStream inputStream;
        try {
            inputStream = assetManager.open(fileName);
            int size = inputStream.available();

            byte[] buffer = new byte[size];

            inputStream.read(buffer);

            inputStream.close();

            // byte buffer into a string
            text = new String(buffer);


        } catch (IOException e) {
            e.printStackTrace();

        }

        return text;
    }

注意:请不要调用myReader(your.txt);在主视图线程中,由于阅读文本字母的过程漫长而导致错误