禁用滚动的ListView和启用整个布局 [英] DIsable scrolling for listview and enable for whole layout

查看:196
本文介绍了禁用滚动的ListView和启用整个布局的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目前正在它的主要activity.What我想里面的两个列表视图的Andr​​oid应用程序嗨IAM是禁用两个列表的滚动,让整个页面只有滚动,有没有办法为请你帮忙。 ....
我的code
       包com.example.listviewdemo;

 进口android.app.Activity;
进口android.os.Bundle;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.view.MotionEvent;
 进口android.view.View;
 进口android.widget.AdapterView;
 进口android.widget.ArrayAdapter;
 进口android.widget.ListView;
 进口android.widget.Toast;公共类MainActivity延伸活动{ListView控件列表,列表2;
的String []名称= {快乐,总是,尝试,硬,你会,搞定了!,相信,中,神,一切,将,运行良好,相信,中,神,一切,将要,运行良好};!
的String []名称2 = {相信,中,神,一切,将要,工作好!,相信,中,神,一切,将,运行良好}!;
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);    名单=(ListView控件)findViewById(R.id.listview);
    列表2 =(ListView控件)findViewById(R.id.listview2);
    list.setAdapter(新ArrayAdapter<串GT;(MainActivity.this,android.R.layout.simple_list_item_1,名));
  list2.setAdapter(新ArrayAdapter<串GT;(MainActivity.this,android.R.layout.simple_list_item_1,名称2));    list.setOnItemClickListener(新AdapterView.OnItemClickListener(){        @覆盖
        公共无效onItemClick(适配器视图<>母公司,观景,INT位置,
                长ID){
            // TODO自动生成方法存根            Toast.makeText(getBaseContext(),名字[位置],Toast.LENGTH_SHORT).show();
        }
    });list2.setOnItemClickListener(新AdapterView.OnItemClickListener(){        @覆盖
        公共无效onItemClick(适配器视图<>母公司,观景,INT位置,
                长ID){
            // TODO自动生成方法存根            Toast.makeText(getBaseContext(),NAME2 [位置],Toast.LENGTH_SHORT).show();
        }
    });
}
  }

我的XML code是:

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:ID =@ + ID / LinearLayout1
     机器人:layout_width =match_parent
    机器人:layout_height =match_parent
     机器人:方向=垂直
     工具:上下文=$ {relativePackage} $ {} activityClass。>
    <的TextView
    机器人:ID =@ + ID / text_id1
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
  机器人:文字=@字符串/ STR1/>
   < ListView控件
    机器人:ID =@ + ID /列表视图
    机器人:layout_width =match_parent
     机器人:layout_height =WRAP_CONTENT
    />
    <的TextView
      机器人:ID =@ + ID / text_id2
     机器人:layout_width =WRAP_CONTENT
      机器人:layout_height =WRAP_CONTENT
      机器人:文字=@字符串/ STR2     />      < ListView控件
    机器人:ID =@ + ID / listview2
    机器人:layout_width =match_parent
     机器人:layout_height =WRAP_CONTENT
       />
      < / LinearLayout中>


解决方案

您可以试试这个。

有关XML部件做到这一点:

 把下一个滚动查看整个布局数据,例如
    <滚动型
        机器人:ID =@ + ID / scrollViewId
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:fillViewport =真正的>        <的LinearLayout
            机器人:layout_width =match_parent
            机器人:layout_height =WRAP_CONTENT
            机器人:方向=垂直>                < ListView控件
                    机器人:ID =@ + ID /列表
                    机器人:layout_width =match_parent
                    机器人:layout_height =WRAP_CONTENT/> //说你的第一个列表视图                < ListView控件
                    机器人:ID =@ + ID /列表
                    机器人:layout_width =match_parent
                    机器人:layout_height =WRAP_CONTENT/> //说你SECONDLIST VIEW                 //添加其他意见,按要求....        < / LinearLayout中>    < /滚动型>

现在在Java类来完成以后的事......

 只设置适配器列表视图后,这种自定义的方法添加到您的code
  setListViewHeightBasedOnChildren(列表视图)

例如:

 列表=(ListView控件)findViewById(R.id.listview);
      list.setAdapter(新ArrayAdapter<串GT;
                      (MainActivity.this,android.R.layout.simple_list_item_1,名));
      setListViewHeightBasedOnChildren(名单);

就做同样的第二个列表视图了。

下面是setListViewHeightBasedOnChildren方法的身体

 公共静态无效setListViewHeightBasedOnChildren(ListView控件ListView控件)
{
    ListAdapter listAdapter = listView.getAdapter();
    如果(listAdapter == NULL)
        返回;    INT desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),MeasureSpec.UNSPECIFIED);
    INT totalHeight = 0;
    查看查看= NULL;    的for(int i = 0; I< listAdapter.getCount();我++)
    {
        鉴于= listAdapter.getView(我,视图的ListView);        如果(我== 0)
            view.setLayoutParams(新ViewGroup.LayoutParams(desiredWidth,
                                      LayoutParams.MATCH_PARENT));        view.measure(desiredWidth,MeasureSpec.UNSPECIFIED);
        totalHeight + = view.getMeasuredHeight();    }    ViewGroup.LayoutParams PARAMS = listView.getLayoutParams();
    params.height = totalHeight +((listView.getDividerHeight())*(listAdapter.getCount()));    listView.setLayoutParams(PARAMS);
    listView.requestLayout();}

希望它为你工作。

Hi iam currently working on an android application it has two list views inside the main activity.What i want is disable the scrolling of two lists and allow the whole page to scroll only,is there any way for that please do help..... my code package com.example.listviewdemo;

 import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.ListView;
 import android.widget.Toast;

public class MainActivity extends Activity {

ListView list,list2;
String[] name={"Happy","always","try","hard","you will","get it!","Believe","in","God","everything","will","work well!","Believe","in","God","everything","will","work well!"};
String[] name2={"Believe","in","God","everything","will","work well!","Believe","in","God","everything","will","work well!"};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    list = (ListView) findViewById(R.id.listview);
    list2 = (ListView) findViewById(R.id.listview2);
    list.setAdapter(new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,name));
  list2.setAdapter(new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,name2));



    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            // TODO Auto-generated method stub

            Toast.makeText(getBaseContext(), name [position],Toast.LENGTH_SHORT).show();
        }
    });

list2.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            // TODO Auto-generated method stub

            Toast.makeText(getBaseContext(), name2 [position],Toast.LENGTH_SHORT).show();
        }
    });   
}   
  }

my xml code is:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
     android:layout_width="match_parent"
    android:layout_height="match_parent"
     android:orientation="vertical"
     tools:context="${relativePackage}.${activityClass}" >
    <TextView
    android:id="@+id/text_id1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
  android:text="@string/str1" />
   <ListView
    android:id="@+id/listview"
    android:layout_width="match_parent"
     android:layout_height="wrap_content"
    />
    <TextView
      android:id="@+id/text_id2"
     android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/str2" 

     />

      <ListView
    android:id="@+id/listview2"
    android:layout_width="match_parent"
     android:layout_height="wrap_content"
       />
      </LinearLayout>

解决方案

You can try this.

FOR xml PART DO THIS:

Put your entire layout data under one Scroll View, For example


    <ScrollView
        android:id="@+id/scrollViewId"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true" >             

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

                <ListView
                    android:id="@+id/list"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" /> // SAY YOUR FIRST LIST VIEW

                <ListView
                    android:id="@+id/list"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" /> // SAY YOUR SECONDLIST VIEW

                 // Add your other views as per requirement....

        </LinearLayout>

    </ScrollView>

NOW IN JAVA CLASS DO THE FOLLOWING THING...

  Just add this custom method to your code after setting  adapter to list view
  setListViewHeightBasedOnChildren(listview)

For Example:

      list = (ListView) findViewById(R.id.listview);
      list.setAdapter(new ArrayAdapter<String> 
                      (MainActivity.this,android.R.layout.simple_list_item_1,name));
      setListViewHeightBasedOnChildren(list);

Do it same for second list view too.

Here is body of setListViewHeightBasedOnChildren METHOD

   public static void setListViewHeightBasedOnChildren(ListView listView) 
{
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null)
        return;

    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.UNSPECIFIED);
    int totalHeight=0;
    View view = null;

    for (int i = 0; i < listAdapter.getCount(); i++) 
    {
        view = listAdapter.getView(i, view, listView);

        if (i == 0)
            view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth,  
                                      LayoutParams.MATCH_PARENT));

        view.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
        totalHeight += view.getMeasuredHeight();

    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight + ((listView.getDividerHeight()) * (listAdapter.getCount()));

    listView.setLayoutParams(params);
    listView.requestLayout();

}

Hope it works for you.

这篇关于禁用滚动的ListView和启用整个布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆