0

我有这个非常基本的观点:

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

<TextView
    android:id="@+id/question_label"    
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Your question: "
    />     

<TextView
    android:id="@+id/question"    
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text=""
    />         

        <EditText  
            android:id="@+id/question_text"  
            android:layout_height="wrap_content"  
            android:hint="@string/question_comment_hint"  
            android:inputType="textMultiLine"  
            android:lines="4"  
            android:layout_width="fill_parent">  
        </EditText>

<Button  
            android:id="@+id/submit"  
            android:layout_height="wrap_content"  
            android:text="@string/submit"  
            android:onClick="sendFeedback"  
            android:layout_width="fill_parent">  
        </Button>       



<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:id="@+id/please_wait"    
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Please wait while the discussion loads..."
    />     

    <ListView
    android:id="@android:id/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+id/label"
        android:textSize="20px" >        
    </ListView>         

    </LinearLayout>
</ScrollView>

</LinearLayout>

我希望用它做的是允许用户滚动浏览整个评论列表。截至目前,当屏幕上的评论多于空间时,屏幕不会向下滚动。

知道我应该改变什么来启用评论的滚动吗?

谢谢!

4

4 回答 4

1

似乎您正在尝试在 ListView 中的评论上方添加标题。正如编码员指出的那样,您不应该将 ListView 放在 ScrollView 中。您应该考虑将标题视图直接添加到您的 ListView(请参阅 参考资料addHeaderView)。

于 2012-04-12T21:01:09.330 回答
1

我会完全取消滚动视图 - 基于我认为您尝试完成的任务,因为列表视图将自行处理滚动。像这样:

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

<TextView
android:id="@+id/question_label"    
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Your question: "
/>     

<TextView
android:id="@+id/question"    
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
/>         

    <EditText  
        android:id="@+id/question_text"  
        android:layout_height="wrap_content"  
        android:hint="@string/question_comment_hint"  
        android:inputType="textMultiLine"  
        android:lines="4"  
        android:layout_width="fill_parent">  
    </EditText>

<Button  
        android:id="@+id/submit"  
        android:layout_height="wrap_content"  
        android:text="@string/submit"  
        android:onClick="sendFeedback"  
        android:layout_width="fill_parent">  
    </Button>       

<TextView
android:id="@+id/please_wait"    
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Please wait while the discussion loads..."
/>     

<ListView
android:id="@android:id/list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@+id/label"
    android:textSize="20px" >        
</ListView>         

现在的不同之处在于 ID 为“please_wait”的 TextView 不会随列表滚动。如果您需要它与列表一起滚动,我建议您在 java 中为您的列表使用动态构建的 TableLayout,然后将它和您的 textview 添加到 ScrollView。TableLayout 不会自行滚动,这就是为什么它比在 ScrollView 中使用 ListView 更好的解决方案。如果您想这样做,请告诉我,我将发布一些示例代码。

于 2012-04-12T21:04:31.393 回答
1

基本上你可以这样做:摆脱滚动视图并加载文本视图。像这样为您的列表视图设置一个简单的适配器:

fList = (ListView)findViewById(R.id.lstview);
fList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[]{"Please wait while the discussion loads..."}));

比获取您的评论并设置为您的列表视图。

list.setAdapter(adapter);
于 2012-04-12T21:07:38.953 回答
1

您不应该在 ScrollView 中有 ListView。膨胀一个 LinearLayout(vertical) 代替:

<?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" >

    <TextView
        android:id="@+id/question_label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Your question: " />

    <TextView
        android:id="@+id/question"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="" />

    <EditText
        android:id="@+id/question_text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/question_comment_hint"
        android:inputType="textMultiLine"
        android:lines="4" >
    </EditText>

    <Button
        android:id="@+id/submit"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="sendFeedback"
        android:text="@string/submit" >
    </Button>

    <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:id="@+id/please_wait"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Please wait while the discussion loads..." />

            <LinearLayout
                android:id="@+id/comments_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:visibility="invisible" >
            </LinearLayout>
        </LinearLayout>
    </ScrollView>

</LinearLayout>

在您的代码中:

LinearLayout commentsLayout = (LinearLayout) findViewById(R.id.comments_layout);

填充线性布局:

    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    for(int i = 0; i < comments.size(); i++){

        View childView = inflater.inflate(R.layout.comment_list_item, commentsLayout, false);

        TextView comment = (TextView) childView.findViewById(R.id.comment);

        comment.setText("Something");

        categoriesLayout.addView(childView, i);

    }

类似的东西,希望这会有所帮助。

于 2012-04-12T21:25:53.923 回答