PullToRefreshListView抖动的问题

zmscs 2015-08-23 04:15:24
PullToRefreshListView这个开源的拉动刷新的listview还是很好用的,相信大家应该都用过,但是开发中遇到这样一个问题,如果在PullToRefreshListView的下方放置一个控件,控制这个控件的显示或者隐藏时,PullToRefreshListView会发生抖动的现象;而普通的ListView就不会出现这种问题;
我尝试了下改布局,不行,估计得改动控件本身,不知道大家有遇到这种情况的吗?不吝赐教啊,非常感谢啊;
贴下布局文件:
ListItem的布局:

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="80dp">

<TextView
android:id="@+id/txtItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="12dp"
android:padding="12dp"
android:textSize="18sp"
android:focusable="false"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"/>
</RelativeLayout>


ListView所在activity的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<Button
android:id="@+id/btnClear"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_alignParentBottom="true"
android:text="@string/clear"
android:visibility="gone" />

<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pull_refresh_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/btnClear" />

</RelativeLayout>


activity代码:
package com.test.pulllistviewtest;

import java.util.ArrayList;
import java.util.List;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

public class PullListView extends Activity{
private PullToRefreshListView listView = null;
private Button btnClear;
private ListAdapter myAdapter;

private List<String> listData;
private boolean flag = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.pulllistview);
listView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
btnClear = (Button) findViewById(R.id.btnClear);
ActionBar actionbar = getActionBar();
actionbar.setTitle("PullToRefreshListView");
actionbar.setDisplayShowTitleEnabled(true);
actionbar.setDisplayHomeAsUpEnabled(true);
actionbar.setDisplayShowHomeEnabled(false);
initData();
listView.setAdapter(myAdapter);
listView.setMode(Mode.PULL_FROM_END);
}

private void initData() {
listData = new ArrayList<String>();
for (int i = 0; i < 30; ++i) {
listData.add("测试" + i);
}

myAdapter = new ListAdapter(this, listData);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.control, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
}
if (item.getItemId() == R.id.control) {
if(flag) {
btnClear.setVisibility(View.GONE);
flag = false;
}
else {
btnClear.setVisibility(View.VISIBLE);
flag = true;
}

}
return super.onOptionsItemSelected(item);
}
}


也可以下载我写好的再现例子:
http://download.csdn.net/detail/zmscs/9038313
通过actionbar的控制按钮来控制底部button的显示和隐藏;
...全文
1059 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
乃哥1 2016-11-06
  • 打赏
  • 举报
回复
大神,请赐教啊,我也遇上了,不知道怎么解决啊
code作业本 2016-10-27
  • 打赏
  • 举报
回复
有大神解决了么?求解决方法啊~
wuli_912 2016-04-09
  • 打赏
  • 举报
回复
您怎么解决这个问题呢,急需,麻烦告知,谢谢
孟芳芳 2016-03-04
  • 打赏
  • 举报
回复
怎么解决的,求教
mxpsun 2016-01-22
  • 打赏
  • 举报
回复
怎么解决的?求教。
langtou2006 2016-01-20
  • 打赏
  • 举报
回复
同,无法解决。onsizechanged()不知道怎么改,感觉要计算list里填充的内容占屏幕比例,只有当弹出的遮住内容时才把布局往上顶。如果设置adjustPan抖动会好点,但肯定不是需要的效果。
野生程序员vip 2015-11-11
  • 打赏
  • 举报
回复
引用 9 楼 wjc133 的回复:
[quote=引用 8 楼 u011070145 的回复:] [quote=引用 6 楼 wjc133 的回复:] [quote=引用 5 楼 u011070145 的回复:] [quote=引用 4 楼 wjc133 的回复:] [quote=引用 3 楼 u011070145 的回复:] 抖动是怎么个情况 是滚动条滚动到底部 然后被弹回这种?
不是。是ListView会向上挪一下,而后又恢复原位。[/quote] 我估计是你底部有加控件导致的吧? 有的话去掉试试看[/quote] 就是为了加底部条啊。去掉还做什么做。。。[/quote] 动态加载底部 [/quote] 估计您到最后也没看明白。。。这个底部条本来就是动态加载的。。。问题已经解决了,谢谢。[/quote] 楼主,你的抖动问题是怎么解决的?我也遇到这个问题了,求救
baidu_32724025 2015-11-11
  • 打赏
  • 举报
回复
怎么解决的 求教
JPF1024 2015-10-19
  • 打赏
  • 举报
回复
之前整合过一次,发现不太适合需求,换成官方的了。简单,快速。
大海梦想 2015-10-18
  • 打赏
  • 举报
回复
引用 8 楼 u011070145 的回复:
[quote=引用 6 楼 wjc133 的回复:] [quote=引用 5 楼 u011070145 的回复:] [quote=引用 4 楼 wjc133 的回复:] [quote=引用 3 楼 u011070145 的回复:] 抖动是怎么个情况 是滚动条滚动到底部 然后被弹回这种?
不是。是ListView会向上挪一下,而后又恢复原位。[/quote] 我估计是你底部有加控件导致的吧? 有的话去掉试试看[/quote] 就是为了加底部条啊。去掉还做什么做。。。[/quote] 动态加载底部 [/quote] 估计您到最后也没看明白。。。这个底部条本来就是动态加载的。。。问题已经解决了,谢谢。
浅笑_JIE 2015-09-09
  • 打赏
  • 举报
回复
引用 6 楼 wjc133 的回复:
[quote=引用 5 楼 u011070145 的回复:] [quote=引用 4 楼 wjc133 的回复:] [quote=引用 3 楼 u011070145 的回复:] 抖动是怎么个情况 是滚动条滚动到底部 然后被弹回这种?
不是。是ListView会向上挪一下,而后又恢复原位。[/quote] 我估计是你底部有加控件导致的吧? 有的话去掉试试看[/quote] 就是为了加底部条啊。去掉还做什么做。。。[/quote] 动态加载底部
大海梦想 2015-09-09
  • 打赏
  • 举报
回复
今天看了一下PullToRefreshListView的源码,发现问题出在onSizeChanged()的时候,它会重新测算header和footer的大小。然后刷新布局导致了页面的抖动。但是怎么解决就不知道了。。。
大海梦想 2015-09-09
  • 打赏
  • 举报
回复
引用 5 楼 u011070145 的回复:
[quote=引用 4 楼 wjc133 的回复:] [quote=引用 3 楼 u011070145 的回复:] 抖动是怎么个情况 是滚动条滚动到底部 然后被弹回这种?
不是。是ListView会向上挪一下,而后又恢复原位。[/quote] 我估计是你底部有加控件导致的吧? 有的话去掉试试看[/quote] 就是为了加底部条啊。去掉还做什么做。。。
浅笑_JIE 2015-09-08
  • 打赏
  • 举报
回复
引用 4 楼 wjc133 的回复:
[quote=引用 3 楼 u011070145 的回复:] 抖动是怎么个情况 是滚动条滚动到底部 然后被弹回这种?
不是。是ListView会向上挪一下,而后又恢复原位。[/quote] 我估计是你底部有加控件导致的吧? 有的话去掉试试看
大海梦想 2015-09-08
  • 打赏
  • 举报
回复
引用 3 楼 u011070145 的回复:
抖动是怎么个情况 是滚动条滚动到底部 然后被弹回这种?
不是。是ListView会向上挪一下,而后又恢复原位。
浅笑_JIE 2015-09-08
  • 打赏
  • 举报
回复
抖动是怎么个情况 是滚动条滚动到底部 然后被弹回这种?
大海梦想 2015-09-08
  • 打赏
  • 举报
回复
不知道楼主解决了没有啊。我也遇到了这个问题,急求解决方案;
zmscs 2015-08-24
  • 打赏
  • 举报
回复
难道没有碰到同样问题的朋友吗;

80,469

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧