我必须添加pull-to-refresh功能来刷新主屏幕上的信息。这是我的屏幕UI方案(红色区域应该处理拉动):
我使用ready solution进行pull-to-refresh。由于文档,我的红色布局应该是这些类之一:
ListView
ExpandableListView
GridView
WebView
ScrollView
HorizontalScrollView
ViewPager
但是我的屏幕上有ListView,所以我无法使用ScrollView作为红色布局。我坚持这个问题。可以在iOS中将UITableView用于UIScrollView,但在Android中我不知道在这种情况下该怎么做。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
为什么不用LinearLayout替换listview,然后你可以使用ScrollView? 您只需要为linearlayout中的项目创建布局,然后使用以下内容添加它们:
LinearLayout layout = (LinearLayout)findViewById(R.id.MyListLayout);
for (int i=0; i<list.size(); i++) {
Item item = list.get(i);
View view = inflater.inflate(R.layout.MyRowLayout, null);
Textview myTextView = view.findViewById(R.id.MyTextView);
myTextView.setText(item.getString());
list.addView(vi);
}
答案 1 :(得分:0)
拉动刷新是水平还是垂直?
如果它是水平的,使用HorizontalScrollView(也可以使用ViewPager),然后在其中放置一个Table?Layout。
如果它是水平的,那么,我不认为我喜欢那种设计(拉动刷新区域应该只是ListView),但我相信有一些方法可以使用ListView而不需要内部滚动您可以依靠父ScrollView进行滚动,但我需要检查旧问题的代码以“记住”如何执行此操作。
答案 2 :(得分:0)
我已经解决了这个问题,但忘了写一下:)
我的layout.xml
文件如下所示:
<com.handmark.pulltorefresh.library.PullToRefreshScrollView
android:id="@+id/home_info_pulltorefresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
<LinearLayout
android:id="@+id/home_info_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white_background"
android:baselineAligned="false"
android:orientation="horizontal" >
<LinearLayout
android:id="@+id/charts_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:orientation="vertical"
android:paddingRight="5dp" >
<FrameLayout
android:id="@+id/frame_container_chart_top"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<FrameLayout
android:id="@+id/frame_container_chart_bottom"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
<FrameLayout
android:id="@+id/frame_container_right"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>
android:fillViewport="true"
用于拉伸其内容以填充视口(滚动match_parent的高度)
我以编程方式添加包含ListView的Fragment(R.layout.frame_container_right
Fragment resource ID)
一切正常,但当我尝试向下滚动ListView时,我的ScrollView开始滚动。滚动ListView向上工作正常。另外我注意到,如果我点击ListView,向左或向右移动手指,然后尝试向下滚动,触摸事件不会从ListView传输到ScrollView,我得到预期的行为。所以我决定以编程方式模拟这种情况:
mListViewReviews.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
long startTime = SystemClock.uptimeMillis();
long duration = 1;
MotionEvent e = MotionEvent.obtain(startTime, startTime + duration, MotionEvent.ACTION_MOVE, event
.getX(), event.getY() + 10, 0);
MotionEvent ev = MotionEvent.obtain(startTime + duration, startTime + duration * 2,
MotionEvent.ACTION_MOVE, event.getX(), event.getY() + 20, 0);
v.dispatchTouchEvent(e);
v.dispatchTouchEvent(ev);
}
return false;
}
});
因此,我已经使用适当的单元重用和工作拉动刷新逻辑工作ListView。谢谢!