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

前端之家收集整理的这篇文章主要介绍了如何在Android上按下按钮滚动Horizo​​ntalScrollView?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

main.xml中

IoUs"
            android:visibility="gone" />

        

活动

 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’值对我来说不正确.如何为此找到最大的滚动值?
提前致谢

最佳答案

猜你在找的Android相关文章