具有listview的整个活动的android滚动视图

时间:2016-03-27 07:15:20

标签: android android-layout listview button scrollview

我想要一个Android活动的特定要求。创建一个论坛活动,其中包含标题,帖子,评论作为列表和评论按钮。

要求是:

  1. 标题在上面
  2. 发布在
  3. 之下
  4. 发布此帖子的用户名
  5. 评论为列表视图
  6. 注释按钮始终显示在活动布局的底部。
  7. 上面定义的所有内容都是滚动视图
  8. 我面临的问题是,当标题和帖子的高度增加列表视图并且按钮离开android视图时。当我尝试将滚动视图放在整个活动按钮上时,列表视图下方不会出现总是在底部。

    P.S我是初学者。

    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.trippals.android.SinglePostView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin">
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/clubtitle"
    android:background="@drawable/abc_list_selector_background_transition_holo_ligh    t"
        android:textSize="25sp"
        android:textStyle="bold"
      />
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/data"
        android:layout_below="@+id/clubtitle"
        android:layout_marginTop="15dp"
        android:background="@drawable/abc_list_selector_background_transition_holo_light"
        android:textSize="20sp"
        />
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/user"
        android:textStyle="bold"
        android:layout_below="@+id/data"
        android:layout_marginTop="20dp"
        />
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/user"
        android:orientation="vertical"
        android:layout_alignParentBottom="true"
        android:weightSum="2"
        >
    
    <ListView
        android:id="@+id/commentList"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1.8"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:divider="@android:color/transparent"
        android:layout_marginTop="5dp"
        android:dividerHeight="10.0sp"
        />
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".2"
        android:orientation="horizontal"
        android:weightSum="1"
        >
    <EditText
        android:id="@+id/commentbox"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="comment"
        android:inputType="text"
        android:layout_weight=".9"
        />
     <ImageButton
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:background="@drawable/ic_play_dark"
            android:id="@+id/addbutton"
         android:layout_weight=".1"
     />
    </LinearLayout>
    </LinearLayout>
    
    <ProgressBar
        android:id="@+id/pbLoadingpost"
        android:visibility="invisible"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        />
    

3 个答案:

答案 0 :(得分:0)

要在scrollview中使用listview,您需要在运行时以编程方式为listview提供固定高度,即item count * item height, 因为ScrollView需要知道其中每个视图的高度。

使用此代码获取列表视图的高度。

int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
    View listItem = listAdapter.getView(i, null, listView);
    listItem.measure(0, 0);
    totalHeight += listItem.getMeasuredHeight();
}

答案 1 :(得分:0)

我遇到了同样的问题。但是当我采用udacity android设计教程时,我学会了如何根据您的要求确定要使用的布局。有一个视频教授如何识别布局。我保证它会对你有所帮助。 我对你的问题的解决方案是: 您将要显示的按钮始终保持在活动底部的滚动视图之外,并保持滚动视图的高度与父按钮高度所需的边距相匹配。

答案 2 :(得分:-1)

看看这个页面: http://blog.lovelyhq.com/setting-listview-height-depending-on-the-items/

正如Ashim所说,如果你想在ScrollView中使用ListView,你必须根据项目的数量来设置ListView的高度(你不应该有一个ListView,当它是ScrollView的子项时应滚动项目,它应该是处理滚动)。