0

Я пытаюсь создать HorizontalScrollView для отображения некоторых изображений (галерея устарела, и я не хочу использовать ViewPager). Галерея выглядит так: enter image description hereAndroid, как сфокусировать следующий Изображение в HorizontalScrollView

Проблема в том, что я не знаю, как сфокусировать только одно изображение в центре в HorizontalScrollView, как в галерее. Если я прокручу вправо, следующее изображение появится в центре экрана. Их путь к этому с помощью HorizontalScrollView?

ответ

0

Используйте этот настраиваемый HorizontalScrollView. В этом случае вы должны передать позицию setCenter, чтобы сделать ее центром.

Приглашение от here

public class CenterLockHorizontalScrollview extends HorizontalScrollView { 

        Context context; 

        int prevIndex = 0; 

      

        public CenterLockHorizontalScrollview(Context context, AttributeSet attrs) { 

            super(context, attrs); 

            this.context = context; 

            this.setSmoothScrollingEnabled(true); 

      

        } 

      

        public void setAdapter(Context context, CustomListAdapter mAdapter) { 

      

            try { 

                fillViewWithAdapter(mAdapter); 

            } catch (ZeroChildException e) { 

      

                e.printStackTrace(); 

            } 

        } 

      

        private void fillViewWithAdapter(CustomListAdapter mAdapter) 

                throws ZeroChildException { 

            if (getChildCount() == 0) { 

                throw new ZeroChildException(

                        "CenterLockHorizontalScrollView must have one child"); 

            } 

            if (getChildCount() == 0 || mAdapter == null) 

                return; 

      

            ViewGroup parent = (ViewGroup) getChildAt(0); 

      

            parent.removeAllViews(); 

      

            for (int i = 0; i < mAdapter.getCount(); i++) { 

                parent.addView(mAdapter.getView(i, null, parent)); 

            } 

        } 

      

        public void setCenter(int index) { 

      

            ViewGroup parent = (ViewGroup) getChildAt(0); 

      

            View preView = parent.getChildAt(prevIndex); 

            preView.setBackgroundColor(Color.parseColor("#64CBD8")); 

            android.widget.LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(

                    LinearLayout.LayoutParams.WRAP_CONTENT, 

                    LinearLayout.LayoutParams.WRAP_CONTENT); 

            lp.setMargins(5, 5, 5, 5); 

            preView.setLayoutParams(lp); 

      

            View view = parent.getChildAt(index); 

            view.setBackgroundColor(Color.RED); 

      

            int screenWidth = ((Activity) context).getWindowManager() 

                    .getDefaultDisplay().getWidth(); 

      

            int scrollX = (view.getLeft() - (screenWidth/2)) 

                    + (view.getWidth()/2); 

            this.smoothScrollTo(scrollX, 0); 

            prevIndex = index; 

        } 

      

    }