Modificar el elemento seleccionado en Numberpicker Android

Estoy tratando de encontrar una forma de lograr el siguiente tipo de vista. En este momento he intentado crear un ListView y hacer más grande el elemento seleccionado. Pero no puedo hacer que el elemento seleccionado siempre esté en medio de mi vista. Así que ahora estoy tratando de conseguir esto con un número pico.

Pero no encontré ninguna forma de ocultar la barra divisora, y hacer diferente el elemento seleccionado y el resto de la vista. La idea es obtener algo como en la imagen inferior.

Espero que alguien pueda ayudarme! ¡Gracias!

Introduzca aquí la descripción de la imagen

4 Solutions collect form web for “Modificar el elemento seleccionado en Numberpicker Android”

Quería lograr un efecto bastante similar en uno de mis proyectos, donde quería que el elemento medio de mi punto de vista de reciclador fuera más prominente. En mi caso, dicho elemento sólo se traduce en z para dar una impresión de enfoque, pero el resultado es bastante similar a lo que estás describiendo. Voy a publicar mi código aquí, en caso de que podría ayudarle a ir en la dirección correcta:

//We're on the onCreateView in a fragment here mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); //First I find the first visible element int firstVisiblePosition = mLayoutManager.findFirstVisibleItemPosition(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (firstVisiblePosition != -1) { int lastVisiblePosition = mLayoutManager.findLastVisibleItemPosition(); int itemHeight = mLayoutManager.getChildAt(0).getMeasuredHeight(); int itemTop = mLayoutManager.getChildAt(0).getTop(); //We use a '+' as itemTop will be negative int delta = itemHeight + itemTop; int currentItemToBeFocused = (delta < (itemHeight / 2)) ? 1 : 0; //Reset the z-translation of other items to 0 for (int i = 0, last = (lastVisiblePosition - firstVisiblePosition); i <= last; ++i) { if (mLayoutManager.getChildAt(i) != null) { mLayoutManager.getChildAt(i).setTranslationZ(0); } } //And set the z-translation of the current "centered" item if (mLayoutManager.getChildAt(currentItemToBeFocused) != null) { mLayoutManager.getChildAt(currentItemToBeFocused).setTranslationZ(10); } } } } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } }); 

Creo que el ListView puede ser más configurable que el NumberPicker.

Lo que puede hacer es utilizar diferentes layouts de filas dependind si es el medio o los otros, por lo que su método getView (…) se vería así:

 public View getView(int position, View convertView, ViewGroup parent) { if (position == 1) { convertView = LayoutInflater.from(getContext()).inflate(R.layout.focused_layout, parent, false); // Do whatever with this view } else { convertView = LayoutInflater.from(getContext()).inflate(R.layout.not_focused_layout, parent, false); // Do whatever with this view } return convertView; } 

De esta manera puede personalizar ambos diseños tanto en XML como en el código. Yo puede cambiar la condición si usted quiere el artículo "especial" cualquier otra manera.

A continuación se muestra un selector de números con valores de visualización personalizados:

  final NumberPicker aNumberPicker = new NumberPicker(context); List<Integer> ids = getIds(); aNumberPicker.setMaxValue(ids.size()-1); aNumberPicker.setMinValue(0); mDisplayedIds = new String[ids.size()]; for (int i = 0; i < ids.size(); i++) { mDisplayedIds[i] = "Nombre"+String.valueOf(ids.get(i)) ; } aNumberPicker.setDisplayedValues(mDisplayedIds); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(50, 50); RelativeLayout.LayoutParams numPickerParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); numPickerParams.addRule(RelativeLayout.CENTER_HORIZONTAL); relativeLayout.setLayoutParams(params); relativeLayout.addView(aNumberPicker, numPickerParams); 

Además, puedes ver una biblioteca de código abierto como ésta AndroidPicker

Puede implementar esto con RecyclerView con un titular para el elemento normal y un titular para el elemento seleccionado.

Dentro de su adaptador RecyclerView

 private static int SELECTED_ITEM_POSITION = 2; private static int NORMAL_ITEM = 1; private static int SELECTED_ITEM = 2; @Override public int getItemViewType(int position) { if(position == SELECTED_ITEM_POSITION) return SELECTED_ITEM; else return NORMAL_ITEM; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); if(viewType == SELECTED_ITEM) { YourSelectedViewHolder selectedViewHolder = (YourSelectedViewHolder)layoutInflater.inflate(R.layout.selected_item_layout, parent, false); return selectedViewHolder; } else //viewType == NORMAL_ITEM { YourNormalViewHolder normalViewHolder = (YourNormalViewHolder)layoutInflater.inflate(R.layout.normal_item_layout, parent, false); return normalViewHolder; } } 
  • Org.eclipse.swt.SWTException: "Widget está eliminado" al intentar abrir AndroidManifest.xml
  • Android: Refactorización de archivos XML en Eclipse?
  • Tema Programáticamente establecido. Cómo volver a cargar Actividad para aplicar
  • Diseño horizontal flexible con `layout_weight` y` maxWidth`
  • cómo poner texto bajo vista de imagen
  • Android L's Ripple Effect - Touch Feedback para los botones - Uso de XML
  • Traducir fácilmente xml en Android
  • Hola World Android App, Error: espacio de trabajo \ appcompat_v7 \ res \ values-v21 \ styles_base.xml Ningún recurso encontrado que coincida con el nombre dado
  • ¿Cómo evitar que el formulario android saltea secciones en forma?
  • Cambiar el color de fondo de la barra de acción mediante AppCompat
  • Barra de búsqueda personalizada tiene una brecha entre el pulgar y el progreso
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.