¿Cómo configurar las imágenes para ScrollView en lugar de degradar los bordes?

Estoy utilizando Horizontal Scroll View, dinámicamente voy a añadir elementos en que. si no. De los elementos son más que mostrar elementos en la pantalla que quiero mostrar la imagen (flecha) en los bordes (como la vista de desplazamiento muestra los bordes de desvanecimiento). Cómo puedo hacerlo.

Sólo mira debajo de la imagen, quiero crear así.

Este es el código xml

<HorizontalScrollView android:layout_width="wrap_content" android:scrollbars="none" android:id="@+id/app_category" android:layout_below="@+id/top_layout" android:background="@drawable/minitopbar" android:layout_height="30dp"> <LinearLayout android:orientation="horizontal" android:id="@+id/app_category_scroll_layout" android:layout_width="wrap_content" android:layout_height="fill_parent"/> </HorizontalScrollView> 

Introduzca aquí la descripción de la imagen

A. Usted tiene que crear su propia clase, que se extiende HorizontalScrollView :

 public class ExtendedHorizontalScrollView extends HorizontalScrollView { private IScrollStateListener scrollStateListener; public HorizontalScrollViewForMenu(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public HorizontalScrollViewForMenu(Context context, AttributeSet attrs) { super(context, attrs); } public HorizontalScrollViewForMenu(Context context) { super(context); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); prepare(); } private void prepare() { if (scrollStateListener != null) { View content = this.getChildAt(0); if (content.getLeft() >= 0) scrollStateListener.onScrollMostLeft(); if (content.getLeft() < 0) scrollStateListener.onScrollFromMostLeft(); if (content.getRight() <= getWidth()) scrollStateListener.onScrollMostRight(); if (content.getLeft() > getWidth()) scrollStateListener.onScrollFromMostRight(); } } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (scrollStateListener != null) { if (l == 0) scrollStateListener.onScrollMostLeft(); else if (oldl == 0) scrollStateListener.onScrollFromMostLeft(); int mostRightL = this.getChildAt(0).getWidth() - getWidth(); if (l >= mostRightL) scrollStateListener.onScrollMostRight(); if (oldl >= mostRightL && l < mostRightL) scrollStateListener.onScrollFromMostRight(); } } public void setScrollStateListener(IScrollStateListener listener) { scrollStateListener = listener; } public interface IScrollStateListener { void onScrollMostLeft(); void onScrollFromMostLeft(); void onScrollMostRight(); void onScrollFromMostRight(); } } 

B. Utilícelo definiendo del diseño:

 <LinearLayout .....> <ImageView android:id="@+id/navigation_left" ..... /> <your.custom.view.package.ExtendedHorizontalScrollView android:id="@+id/scroller" android:layout_width="0px" android:layout_weight="1" android:fadingEdge="none" ....> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" /> </your.custom.view.package.ExtendedHorizontalScrollView> <ImageView android:id="@+id/navigation_right" ..... /> </LinearLayout> 

C. Añada lógica para desactivar las flechas cuando no pueda desplazarse más.

 ((ExtendedHorizontalScrollView)findViewById(R.id.scroller)).setScrollStateListener(new IScrollStateListener() { public void onScrollMostRight() { ((View) scroller.getParent()).findViewById(R.id.navigation_right).setVisibility(View.INVISIBLE); } public void onScrollMostLeft() { ((View) scroller.getParent()).findViewById(R.id.navigation_left).setVisibility(View.INVISIBLE); } public void onScrollFromMostLeft() { ((View) scroller.getParent()).findViewById(R.id.navigation_left).setVisibility(View.VISIBLE); } public void onScrollFromMostRight() { ((View) scroller.getParent()).findViewById(R.id.navigation_right).setVisibility(View.VISIBLE); } }); 

Una alternativa fácil es hacer una vista de desplazamiento sin desvanecimiento de los bordes y luego agregar la imagen con la flecha debajo o encima de la vista de desplazamiento.

Su xml algo similar:

  <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:fadingEdge="none" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <View android:layout_height="6dp" android:layout_width="fill_parent" android:layout_alignParentBottom="true" android:background="@drawable/background_effect"/> </RelativeLayout> </FrameLayout> 
  • Android: arrastrar en MPAndroidChart no responde cuando está contenido en ScrollView
  • ¿Cómo puedo obtener una función de paginación en vista de desplazamiento horizontal sin ViewPager?
  • ScrollView - ¿Cómo desplazarse hacia abajo mientras se diseña el diseño en Eclipse?
  • Función de desplazamiento de listview dentro de la vista de desplazamiento
  • ¿Cómo distinguir el desplazamiento del usuario final de un androide ScrollView desde el desplazamiento programático?
  • Cómo crear un número variable de vistas de texto en android
  • ¿Hay una manera de desplazarse mediante programación una vista de desplazamiento a un texto de edición específico?
  • ¿Cómo cambiar el tamaño del contenido de una webview en android?
  • ScrollView> LinearLayout> PreferenceFragment es altura cero
  • Cómo obtener ArrayIndex fuera de límites Excepción al agregar nuevos elementos a la lista mientras se desplaza
  • Cómo mostrar siempre la barra de desplazamiento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.