如何在Android上按下按钮滚动Horizo​​ntalScrollView?

我的Android应用程序中有水平滚动视图,带有下一个和上一个按钮.我想仅在scollview需要滚动时显示这些按钮.滚动视图内容的宽度超出显示宽度.还要在到达第一个时隐藏上一个和下一个按钮最后的项目.点击这些按钮后如何下一个/上一个项目?

main.xml中

IoUs"
            android:visibility="gone" />

        <horizontalscrollview
            android:id="@+id/horizontalscrollview1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="5dip"
            android:layout_marginRight="5dip"
            android:layout_toLeftOf="@+id/btnNext"
            android:layout_toRightOf="@+id/btnPrevoius"
            android:fillViewport="true" >

            horizontalscrollview>

        

活动

 public class SampleActivity extends Activity {
            private static LinearLayout linearLayout;
            private static horizontalscrollview horizontalscrollview;
            private static Button btnPrevIoUs;
            private static Button btnNext;
            private static int displayWidth = 0;
            private static int arrowWidth = 0;
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                horizontalscrollview = (horizontalscrollview) findViewById(R.id.horizontalscrollview1);
                linearLayout = (LinearLayout) findViewById(R.id.linearLayout1);
                btnPrevIoUs = (Button) findViewById(R.id.btnPrevoius);
                btnNext = (Button) findViewById(R.id.btnNext);
                for (int i = 0; i < 15; i++) {
                    Button button = new Button(this);
                    button.setTag(i);
                    button.setText("---");
                    linearLayout.addView(button);
                }
                ViewTreeObserver vto = linearLayout.getViewTreeObserver();
                vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

                    @Override
                    public void onGlobalLayout() {
                        ViewTreeObserver obs = linearLayout.getViewTreeObserver();
                        obs.removeGlobalOnLayoutListener(this);
                        display display = getwindowManager().getDefaultdisplay();
                        displayWidth = display.getWidth();
                        if (linearLayout.getMeasuredWidth() > (displayWidth - 40)) {
                            btnPrevIoUs.setVisibility(View.VISIBLE);
                            btnNext.setVisibility(View.VISIBLE);
                        }
                    }

                });
                btnPrevIoUs.setonClickListener(listnerLeftArrowButton);
                horizontalscrollview.setonTouchListener(listenerScrollViewTouch);
            }

            private OnTouchListener listenerScrollViewTouch = new OnTouchListener() {

                @Override
                public boolean onTouch(View v,MotionEvent event) {
                    showHideViews();
                    return false;
                }
            };

            private OnClickListener listnerLeftArrowButton = new OnClickListener() {

                @Override
                public void onClick(View v) {
                    horizontalscrollview.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT,new KeyEvent(0,0));
                }
            };


        public static void showHideViews() {
            int maxScrollX = horizontalscrollview.getChildAt(0).getMeasuredWidth()- displayWidth;
            Log.e("TestProjectActivity","scroll X = " +horizontalscrollview.getScrollX() );
            Log.i("TestProjectActivity","scroll Width = " +horizontalscrollview.getMeasuredWidth() );
            Log.d("TestProjectActivity","Max scroll X = " + maxScrollX);

            if (horizontalscrollview.getScrollX() == 0) {
                hideLeftArrow();
            } else {
                showLeftArrow();
            }
            if (horizontalscrollview.getScrollX() == maxScrollX) {
                showRightArrow();
            } else {
                //hideRightArrow();
            }
        }

        private static void hideLeftArrow() {
            btnPrevIoUs.setVisibility(View.GONE);
        }

        private static void showLeftArrow() {
            btnPrevIoUs.setVisibility(View.VISIBLE);
        }

        private static void hideRightArrow() {
            btnNext.setVisibility(View.GONE);
        }

        private static void showRightArrow() {
            btnNext.setVisibility(View.VISIBLE);
        }
    }

‘maxScrollX’值对我来说不正确.如何为此找到最大的滚动值?
提前致谢

最佳答案

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android岛屿数量算...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Andro...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android数据压缩的方法是什么”文章能帮助大家解决疑惑...
这篇“Android怎么使用Intent传大数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅...
本文小编为大家详细介绍“Android事件冲突怎么解决悬浮窗拖拽问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android事件冲突怎么解决悬浮窗拖拽问题”文...
这篇文章主要介绍了Android拼接如何实现动态对象的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android拼接如何实现动态对象文...
今天小编给大家分享一下Android全面屏适配怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下...
本篇内容介绍了“Android怎么开发Input系统触摸事件分发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何...
今天小编给大家分享一下AndroidRoom怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下...
本文小编为大家详细介绍“AndroidRoom使用方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“AndroidRoom使用方法有哪些”文章能帮助大家...
这篇文章主要介绍“Android中的OpenGL怎么配置使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android中的Open...
这篇文章主要介绍了Android如何自定义自动识别涂鸦工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android如何自定义自动...
今天小编给大家分享一下Android如何自定义有限制区域的图例角度自识别涂鸦工具类的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以...
今天小编给大家分享一下ReactNative错误采集原理在Android中如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章...
这篇文章主要讲解了“Android崩溃日志收集和保存代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“A...
这篇“Android面向单Activity开发实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大...
本篇内容介绍了“Android应用启动白屏处理的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何...