Articles of scroll

如果滚动条太短,滚动查看不会滑动

我对Android应用程序开发相当陌生,我一直在玩滑动手势,使用Android的SimpleOnGestureListener和ViewFlipper。 有3个子ViewFlipper,每个是一个ScrollView。 当Activity加载时,它们全部被dynamic地填充,并且在之后它们不会改变。 ScrollView是SimpleOnGestureListeners附加的地方。 这是我正在使用的布局: + ViewFlipper ++ ScrollView(x3,每个页面一个,每个都有以下:) +++ LinearLayout(垂直) ++++的TextView ++++ TableLayout(dynamic填充w / TableRows) ++++查看 我扩展了onFling方法,使用您可以在网上任何地方find的常见教程代码,并且它工作的很好 – 除非其中一个ScrollViews没有足够的内容滚动。 我已经缩小了问题的范围,通过覆盖并调用每个SimpleOnGestureListener的方法来添加一个print-to-log来触发检测。 当我在滚动的页面上滑动时,我会在onScroll的“onScroll”中得到一些“onClick”中的东西。在页面太短而无法滚动的页面中,我在onLongPress的onShowPress“”中获得“onClick” “,那只有当我触摸太短滚动视图的孩子的内容 – 如果我触摸到其他地方,我根本没有得到任何事件。 想法是什么错误,或者如何检测滑动手势,无论ScrollView有多大? 编辑:我已经确定,当我在Android 2.2模拟器上运行这个,而不是我已经使用的Android 2.1u1 DroidX模拟器,它消失了。 这在多个环境中是可重现的。 我对此有更多的了解。 看起来好像onInterceptTouchEvent不是每个运动事件调用当一个滚动视图包含在一个鳍(或WorkspaceView)。 特别是,我修改另一个视图类来解决这个问题(它不是独特的鳍状肢)时发现的行为如下 – 请注意,这只是Android 2.1: 如果滚动视图足够长,滚动视图将捕获ACTION_DOWN运动事件,并且每个后续的ACTION_MOVE事件都会经过鳍状肢的onInterceptTouchEvent,在那里被截取并正确处理。 在android 2.2中,无论滚动长度如何,都会发生这种情况。 回到2.1:如果scrollview的长度不够滚动,ACTION_DOWN运动事件不会被scrollview捕获,而是返回到鳍状肢的onTouchEvent。 所有相同手势的后续ACTION_MOVE事件都会跳过 onInterceptTouchEvent函数并直接进入onTouchEvent函数! 我解决这个问题的方法是将我在onTouchEvent中的function用于ACTION_MOVE事件,并将其重构为自己的方法。 通过这种方式,如果检测到事件先前没有处理,我可以让onTouchEvent调用onInterceptTouchEvent,然后调用该function。 case MotionEvent.ACTION_MOVE: if (touchState == TOUCH_STATE_SCROLLING) { handleScrollMove(ev); } else […]

一起滚动多个水平的RecyclerView

我创build了一个EPG视图,我在其中有一个LinearLayout封装的多个水平的RecyclerView (作为电视节目)。 当我滚动一个RecyclerView时,我希望剩下的视图一起滚动。 @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); layoutContent.setWeightSum(epg.getChannels().size()); //prepare recycler views and add into layoutContent based on epg channels for(EPG.Channel ch : epg.getChannels()){ AppLog.error(TAG, "Creating RecyclerView for: " + ch.getDisplayName()); //create new recycler view final RecyclerView rv = new RecyclerView(layoutContent.getContext()); lstRecyclerViews.add(rv); //set layout manager rv.setLayoutManager(new LinearLayoutManager(layoutContent.getContext(), LinearLayoutManager.HORIZONTAL, false)); //create adapter rv.setAdapter(new MyAdapter(ch.getPrograms())); […]

如何停止滚动屏幕顶部的select微调在Android

我在滚动视图中使用微调,当我做select微调,滚动视图滚动到屏幕的顶部。 有什么办法可以防止这个滚动? 任何帮助表示赞赏。 谢谢。

scrollBy在嵌套的recyclerview中无法正常工作

我有一个垂直滚动RecyclerView水平滚动内部RecyclerViews就像这样。 通过这个实现,用户可以同步滚动每个水平的回收站。 但是,当用户垂直滚动到父回收站视图时,刚刚附加在窗口上的新水平回收站不会显示在同一个滚动x位置上。 这个是正常的。 因为它刚刚创build。 所以,我试图在显示之前滚动到滚动的位置。 像这样: 注意 :这是父级回收站的方向是垂直的适配器。 @Override public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) { super.onViewAttachedToWindow(holder); CellColumnViewHolder viewHolder = (CellColumnViewHolder) holder; if (m_nXPosition != 0) { // this doesn't work properly viewHolder.m_jRecyclerView.scrollBy(m_nXPosition, 0); } } 正如你所看到的, scrollBy不会影响第10行 , 第11行 , 第12 行和第13行。之后,我debugging了代码,以便能够找出发生了什么事情。 当我使用scrollBy设置滚动位置时,childCount()对于第10 行 , 第11 行 , 第12 行和第13 行返回零,因此它们不滚动。 但为什么 ? 为什么其他人工作? 我怎样才能解决这个问题 […]

带有edittext的列表视图 – 自动滚动“下一个”

我有一个ListView,每行有一个EditText(除了一些不可编辑的TextView)。 当我编辑EditText中的文本时,软键盘上有“下一步”button – 按下它将焦点移动到下一个字段 – 这很好。 在最后一行,button变成“完成”。 我正在使用EditText.setImeOptions设置button为“完成”或“下一步”根据这是否是最后一行。 问题是listview可以有更多的行可以放在屏幕上。 发生这种情况时,在下一个可见行上按下“下一步”将焦点再次移动到第一行。 我怎样才能让它滚动列表,并转到下一行? 作为参考,这是我在我的适配器中做什么: public class AuditAdapter extends BaseAdapter { private Context context; private int layoutResourceId; private Audit audit; … @Override public View getView(final int position, View convertView, ViewGroup parent) { View row = convertView; final AuditItemHolder holder = (row == null ? new AuditItemHolder() : (AuditItemHolder)row.getTag()); […]

Android开发:改进EditText滚动?

有什么办法可以增加我的EditText的滚动吗? 我想使它像在网页浏览一样滚动,平滑和快速。 这可能吗? 谢谢,Alex。

OnPageChangeListener alpha交叉淡入淡出

Android中有很多关于淡入淡出的问题,但都包含animation。 我的问题是关于使用ViewPager的OnPageChangeListener进行淡入淡出。 我有一个ViewPager可以有无限数量的意见,但在实践中使用约6或7个意见。 那里不多。 ViewPager中的每个视图都有一个背景位图,该位图应该被固定,并与下一个(或前一个)视图的背景交叉淡入淡出,而不是与视图的其余部分一起滚动。 为了达到这个目的,我分离了背景并添加到一个ArrayList中,稍后将它们分配给ImageViews。 但是因为我不想冒险让我的活动结束与众多的ImageView的机会我想到了以下结构: <FrameLayout android:id="@+id/backgroundContainer" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/bottomImage" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="center" /> <ImageView android:id="@+id/middleImage" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="center" /> <ImageView android:id="@+id/topImage" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="center" /> </FrameLayout> 然后,将一个OnPageChangeListener分配给ViewPager以将背景分配给ImageViews。 @Override public void onPageSelected(int position) { MyLog.i(TAG, "PAGE SELECTED: " + position); if(position == 0) { _bottomBackground.setImageBitmap(null); _topBackground.setImageBitmap(_backgroundStack.get(position+1)); } else if (position == NUM_ITEMS-1) […]

在android中不可滚动的textview

我在我的XML中configuration了一个textview,如下所示。 <RelativeLayout> <!– more views here like ImageView and other TextView–> <TextView android:id="@+id/message" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLines="4" android:textIsSelectable="false" android:autoLink="web|phone|email"/> </RelativeLayout> 该视图的内容可以是文本,也可以包含HTML内容。 因此我将autoLink设置为true。 问题是,如果autoLink或textIsSelectable为true,那么textview在其内容多于4行时开始滚动,类似于(MovementMethod)。 我正在寻找一种方法来停止/禁用此文本视图滚动。 我试图禁用滚动使用setEnable(false)的文本视图,但是在textview中的所有链接之后不能被点击。 我认为必须有一个简单的方法来实现可能包含html内容的“不可滚动的textview”。

TextView在图库中

我有可滚动的TextView和Gallery当我启用的TextView onTouchEvent() ,我不能导航Gallery ,如果我禁用onTouchEvent() ,我可以向左滚动Gallery但不能向下滚动到TextView 。 我试图做技巧,像发送相同的MotionEvent()到Gallery和TextView ..任何想法如何解决它?

Android:垂直viewpager中的RecyclerView

我想在一个垂直的viewpager中实现一个recyclerview。 我目前的布局如下所示 VerticalViewpager – Fragment1 – ImageView – Fragment2 – RecyclerView 如果我从Fragment1滑动到Fragment2一切正常。 我可以在回收站内上下滚动。 如果我尝试滑动/回滚到Fragment1,就会出现问题。 如果用户已经滚动到回收站视图的顶部,我想将下一个“向上”滚动事件转发到垂直viewpager。 我试图重写onInterceptTouchEvent方法,但不幸的是仍然没有成功。 有任何想法吗? 谢谢你的帮助 :)