ScrollView嵌套ListView显示不完全、嵌套TextView不能滚动解决办法
2017-02-12 10:15
441 查看
目录:
一、情景说明二、最初做法
三、解决办法
一、情景说明
1、情景最近项目刚好有一个需求,需要在一个界面中用ScrollView嵌套一个滚动的TextView和一个listView,既要不影响TextView内容的滚动,也要使整个ScrollView可以滚动起来,最终效果如下图所示:
2、滚动的TextView的实现
xml布局文件:
<TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxHeight="100dp" android:scrollbars="vertical" android:text="啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦" android:textSize="20dp" />
java代码:
textView.setMovementMethod(ScrollingMovementMethod.getInstance());//设置可以滑动
二、最初做法
一开始以为只要在整个布局文件添加一个ScrollView控件,然后在里面放置一个
LinearLayout控件且竖向布局,最后在
LinearLayout控件中直接添加
TextView跟
ListView控件:
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxHeight="100dp" android:scrollbars="vertical" android:text="啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦" android:textSize="20dp" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
</ScrollView>
但是直接这样布局会导致
TextView内容无法滚动,且
ListView只能显示一行,内容显示不全,无法达到预期效果。
三、解决办法
1、解决ScrollView嵌套
TextView内容无法滚动问题
为
TextView控件添加触摸监听事件:
textView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { // 解决scrollView中嵌套textView导致其不能上下滑动的问题 view.getParent().requestDisallowInterceptTouchEvent(true); switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_UP: view.getParent().requestDisallowInterceptTouchEvent(false); break; } return false; } });
2、解决
ScrollView嵌套
ListView显示不完整的问题
新建一个
ListViewInScrollView类继承
ListView并重写
onMeasure方法:
import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.util.AttributeSet; import android.widget.ListView; public class ListViewInScrollView extends ListView { public ListViewInScrollView(Context context) { super(context); } public ListViewInScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public ListViewInScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public ListViewInScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }
在xml布局文件将
ListView改成自定义的
ListViewInScrollView控件:
<com.example.suqh.scrollviewlistview.ListViewInScrollView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content"> </com.example.suqh.scrollviewlistview.ListViewInScrollView>
最后还要在MainActivity.java中补充:
scrollView.smoothScrollTo(0, 0);//一开始滚动到最顶部
这是由于我们重写的ListView会导致界面一打开就会使ListView处于最顶部,这样写可以防止这种现象。
相关文章推荐
- ScrollView嵌套ListView显示不完全、嵌套TextView不能滚动解决办法
- android中的textview显示汉字不能自动换行的一个解决办法
- android中的textview显示汉字不能自动换行的一个解决办法
- 在ScrollView中嵌套ViewPager,ViewPager不能显示的解决办法
- android 开发中ScrollView 嵌套 ViewPager 不能显示解决办法
- textView不能完全显示时,滚动显示
- Android4.x中ScrollView嵌套ListView,ListView不能完全显示总结、解决办法
- 从自定义view中传值到activity,用textview显示,自定义view就不能刷新了。大半天时间了,求解决办法
- Android ScrollView中嵌套GridView,ListView只显示一行的解决办法
- Android TextView文字太多显示的最后一行被盖住一半的解决办法
- ScrollView中嵌套ListView是,嵌套在里面的ListView不能完全显示解决方法
- 解决Scrollview 嵌套recyclerview不能显示,高度不正常的问题
- easyui的datagrid无数据时下方滚动条不显示的解决办法(标题栏显示不完全)
- view显示出来不能完全填满window的bug解决
- Word中嵌入型图片不能完全显示的解决办法
- VB使用Bitblt等函数,源图片不完全显示导致不能实现功能的解决办法
- 解决Scrollview 嵌套recyclerview不能显示,高度不正常的问题
- 解决Scrollview 嵌套recyclerview不能显示,高度不正常的问题
- IOS8下的UIScrollView有子控件时滑动经常不能滚动解决办法
- TextView采用setText赋值之后不能立即显示在页面上的问题解决