android开发分享Android:ScrollView强制底部

我想要一个ScrollView从底部开始。 任何方法?

    scroll.fullScroll(View.FOCUS_DOWN)也应该工作。

    你应该像这样在scroll.post里面运行代码:

     scroll.post(new Runnable() { @Override public void run() { scroll.fullScroll(View.FOCUS_DOWN); } }); 

    最适合我的是

     scroll_view.post(new Runnable() { @Override public void run() { // This method works but animates the scrolling // which looks weird on first load // scroll_view.fullScroll(View.FOCUS_DOWN); // This method works even better because there are no animations. scroll_view.scrollTo(0, scroll_view.getBottom()); } }); 

    我增加了完美的工作。

      private void sendScroll(){ final Handler handler = new Handler(); new Thread(new Runnable() { @Override public void run() { try {Thread.sleep(100);} catch (InterruptedException e) {} handler.post(new Runnable() { @Override public void run() { scrollView.fullScroll(View.FOCUS_DOWN); } }); } }).start(); } 

    注意

    这个答案是真正的老版本的android的解决方法。 今天postDelayed没有更多的错误,你应该使用它。

    scroll.fullScroll(View.FOCUS_DOWN)将导致焦点的变化。 当有多个可聚焦视图时,这会带来一些奇怪的行为,例如两个EditText。 这个问题还有另一种方法。

      View lastChild = scrollLayout.getChildAt(scrollLayout.getChildCount() - 1); int bottom = lastChild.getBottom() + scrollLayout.getPaddingBottom(); int sy = scrollLayout.getScrollY(); int sh = scrollLayout.getHeight(); int delta = bottom - (sy + sh); scrollLayout.smoothScrollBy(0, delta); 

    这很好。

    有时scrollView.post不起作用

      scrollView.post(new Runnable() { @Override public void run() { scrollView.fullScroll(ScrollView.FOCUS_DOWN); } }); 

    所以如果你使用scrollView.postDelayed,它肯定会工作

      scrollView.postDelayed(new Runnable() { @Override public void run() { scrollView.fullScroll(ScrollView.FOCUS_DOWN); } },1000); 

    当视图尚未加载时,您将无法滚动。 你可以在上面用post或sleep调用“稍后”,但是这不是很优雅。

    最好是规划滚动,并在下一个onLayout()。 示例代码在这里:

    有一件事要考虑的是不要设置。 确保您的子控件,特别是EditText控件,没有设置RequestFocus属性。 这可能是布局中最后一个解释的属性之一,它将覆盖其父项(布局或滚动视图)上的重力设置。

    不完全是问题的答案,但是我需要在EditText获得焦点时向下滚动。 然而,接受的答案会使ET也失去焦点(我认为滚动视图)。

    我的解决方法如下:

     emailEt.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus){ Toast.makeText(getActivity(), "got the focus", Toast.LENGTH_LONG).show(); scrollView.postDelayed(new Runnable() { @Override public void run() { scrollView.fullScroll(ScrollView.FOCUS_DOWN); } }, 200); }else { Toast.makeText(getActivity(), "lost the focus", Toast.LENGTH_LONG).show(); } } }); 

      以上就是android开发分享Android:ScrollView强制底部相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/518076.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐