android - 给 ScrollView 添加不同的 TextView

标签 android textview scrollview

我有 Activity 从互联网上获取一些数据,并将其显示在屏幕上。 我正在使用 ScrollView ,因为它是长文本,我还想要不同数据的不同文本样式,所以我使用了几个不同样式的 TextView 并将其显示在 Activity 屏幕上, 我的问题是 ScrollView 只能处理一个 View ,所以我如何使用滚动来显示不同样式的 TextView ,我尝试将 LinearLayout 添加到 scrollView 并在代码中将所有 textView 动态添加到此 LinearLayout ,但我是出现异常 - ScrollView 只能承载一个直接 subview 。

下面的代码:

/** this is the function, which called from the onClick method.
wanted data object contains 2 strings title message and the message itself.

When debug the code i can see that there's two String values in each loop.
but i cant add the linearLayout to my scrollView - exception ScrollView can host only one direct child */

    private void showResult(ArrayList<WantedData> result) {
        // TODO Auto-generated method stub
        TextView title;
        TextView data;
        scrollLayout = (LinearLayout) findViewById(R.id.LlScrollView);  
        for (WantedData curr : result) {
            if (curr.getTitle() == null) {
                break;
            }

            title = new TextView(this);
            title.setText(curr.getTitle());

            scrollLayout.addView(title, LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT);
            data = new TextView(this);
            data.setText(curr.getData());   
            scrollLayout.addView(data, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
        }
        scroll.addView(scrollLayout, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);

        //at the onCreate method -  scroll = (ScrollView) findViewById(R.id.SvShowTextFromServer);
    }

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <include
        android:id="@+id/layout_reffernce"
        layout="@layout/explore" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Enter City" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <EditText
                android:id="@+id/EtCity"
                android:layout_width="210dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.14"
                android:orientation="vertical" >

                <requestFocus />
            </EditText>

            <Button
                android:id="@+id/bSearchCity"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Search" />
        </LinearLayout>

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Enter State" />

        <EditText
            android:id="@+id/EtState"
            android:layout_width="253dp"
            android:layout_height="wrap_content"
            android:orientation="vertical" />
    </LinearLayout>

    <ScrollView
        android:id="@+id/SvShowTextFromServer"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <LinearLayout
            android:id="@+id/LlScrollView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/backround"
            android:orientation="vertical" >
        </LinearLayout>


    </ScrollView>

</LinearLayout>

最佳答案

问题是在 ScrollView 中双重创建容器。你不应该在 Activity 中创建它,而是从 xml 中获取已经定义的:

LinearLayout scrollContainer = (LinearLayout)findViewById(R.id.LlScrollView);
for (...) {
    //create here some text
    scrollLayout.addView(text);
}

关于android - 给 ScrollView 添加不同的 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8862881/

相关文章:

具有多行和 "android:ellipsize = middle"的 Android TextView

android - 在 TextView 中检索行间距 - Android

android - Instagram 喜欢在自定义图库中滚动

react-native - React Native Animated.ScrollView 不允许我以编程方式滚动到某个位置

android - ScrollView内的水平RecyclerView : how to get focus when vertical scrolling?

android - 如何从其他应用程序打开 Whatsapp

XML 文件中的 Java 错误 : aborting build

android - 无法找到明确的 Activity 类。您是否在 AndroidManifest.xml 中声明了此 Activity

ios - ScrollView 滚动时如何检查 View 可滚动位置

java - 无法在 ImageView 中显示相机 Activity 的结果