如何在布局中添加完整的scrollview?

时间:2015-09-12 08:36:51

标签: android scrollview

在下面的代码中如何滚动不仅仅是ListView,而是所有的视图都带有它?如果我要添加整页scrollview,则listview不会显示整页。

但顶级菜单应该是不变的。在搜索按钮内,我想滚动完整列表。

XML

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">


    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:orientation="horizontal"
        android:background="#027fdb"
        android:id="@+id/linearlayout1">

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

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="match_parent"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:gravity="center_vertical"
                    android:layout_marginLeft="10dp"
                    android:text="Contact -"
                    android:id="@+id/textView" />

            </LinearLayout>



            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:orientation="horizontal">
                <TextView
                    android:id="@+id/txt_mylead_listcount"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:gravity="center_vertical"
                    android:layout_marginLeft="10dp"
                    android:layout_alignRight="@+id/textView"
                    />

            </LinearLayout>

        </LinearLayout>



        <LinearLayout
            android:id="@+id/lin_symbols"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerVertical="true"
            android:gravity="right"
            android:layout_marginRight="20dp">

        <LinearLayout
            android:id="@+id/lin_addmechines"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="right">

            <ImageView
                android:id="@+id/img_addmachines"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/add_machine"
                />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/lin_addmechines"
            android:layout_gravity="center_vertical"
            android:gravity="right"
            android:layout_marginLeft="10dp">

            <ImageView
                android:id="@+id/img_addfilter"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:src="@drawable/filter"
                />
        </LinearLayout>
        </LinearLayout>


    </RelativeLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:orientation="horizontal"
        >

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:background="@drawable/search"
            android:hint="      Search"
            android:paddingLeft="5dp"
            android:imeOptions="actionSearch"
            android:inputType="text"
            android:id="@+id/textSearch"
            android:layout_below="@+id/textView"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/lin_contactPersons"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_marginBottom="15dp">

        <ImageView
            android:id="@+id/img_contactprs"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/contactprs"
            />

    </LinearLayout>

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dip"
        android:background="#000000" />


    <ListView
        android:id="@+id/users"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

您应该复制布局,您希望使用不同的布局XML滚动列表视图,并将其作为不同的第一项放在列表视图的顶部。您可以使用自定义ListAdapter执行此操作:

//WARNING: I did not try this code, handle it like pseudocode
private class MyCustomAdapter extends BaseAdapter {

    private ArrayList<Item> mData = new ArrayList<>();
    private LayoutInflater mInflater;

    public MyCustomAdapter() {
        mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public void addItem(final Item item) {
        mData.add(item);
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return mData.size() + 1;
    }

    @Override
    public Item getItem(int position) {
        return mData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if(position==0){
            //initialize your custom view
        }else{
            //initialize a normal list item
        }
        return convertView;
    }
}

如果您还有问题,请查看this ListAdapter示例!

答案 1 :(得分:0)

使用此功能滚动视图上的完整视图列表。

 ListView listViewObject;

// after binding list view.
getListViewSize(listViewObject);// pass your listview object here.


public void getListViewSize(ListView myListView) {
    ListAdapter myListAdapter = myListView.getAdapter();
    if (myListAdapter == null) {
        //do nothing return null
        return;
    }
    //set listAdapter in loop for getting final size
    int totalHeight = 0;
    for (int size = 0; size < myListAdapter.getCount(); size++) {
        View listItem = myListAdapter.getView(size, null, myListView);
        listItem.measure(0, 0);
        totalHeight += listItem.getMeasuredHeight();
    }
  //setting listview item in adapter
    ViewGroup.LayoutParams params = myListView.getLayoutParams();
    params.height = totalHeight + (myListView.getDividerHeight() * (myListAdapter.getCount() - 1));
    myListView.setLayoutParams(params);
    // print height of adapter on log
    Log.i("height of listItem:", String.valueOf(totalHeight));
}

希望!它对你有帮助......