禁用滚动的ListView和启用整个布局 [英] DIsable scrolling for listview and enable for whole layout
问题描述
目前正在它的主要activity.What我想里面的两个列表视图的Android应用程序嗨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:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人: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屋!