2011-10-21 6 views
9

He estado tratando de cosas y buscar el último par de horas y no tiene a dónde así que pensé en preguntar aquí.barras de desplazamiento de estilo tableta de Gmail con actionbar transparente

Básicamente, la versión Honeycomb de Gmail tiene una vista de lista a la derecha para su lista de mensajes y cuando desplaza la vista de lista los elementos van debajo de la barra de acciones que parece tener alguna forma de degradado con #00FFFFFF en la parte inferior que sube hasta #FFFFFFFF en la parte superior dando la impresión de que los elementos se desvanecen.

Pero lo importante a notar aquí es que la barra de desplazamiento en la vista de lista nunca pasa por debajo de la Barra de acciones! y la posición superior predeterminada para la vista de lista se encuentra debajo de la barra de desplazamiento.

He intentado implementar un diseño de estilo similar para mi aplicación con una vista de desplazamiento que se desplaza debajo de la barra de acciones que tiene un conjunto alfa, se ve muy bien y bien, ¡pero las barras de desplazamiento también van por debajo! :(y lo hace parecer un poco raro, no es una buena opción.

He conseguido lo que tengo hasta ahora mediante el uso de

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 

y

getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg)); 

que es una un XML dibujable que simplemente tiene un color de #BB000000 (sin gradiente por el momento)

este es el efecto actual, la barra de desplazamiento se puede ver debajo de la barra de acciones :(

Current effect

este es el efecto deseado con la barra de desplazamiento no entrar en la barra de acción, pero el contenido no desplazarse hacia arriba por debajo de ella

Desired effect

Editar: Creo que esto probablemente utiliza algo personalizado en Google y todos han renunciado a averiguarlo

+0

¿Podrían haber configurado la barra de acciones como fondo transparente, y luego utilizar ListView.addHeaderView() que agregó el degradado a la parte superior de la vista de lista? –

+0

Recuerdo que se habló sobre esto, donde se puede usar margen o relleno de algún modo, pero no recuerdo dónde lo encontré. Cualquier ayuda al respecto sería genial. –

Respuesta

2

llamar esto antes de super.onCreate(savedInstanceState); en onCreate de su actividad

requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 

Más: http://developer.android.com/reference/android/view/Window.html#FEATURE_ACTION_BAR_OVERLAY

+0

Como en la pregunta que ya he hecho, hace que la vista de lista quede debajo de la barra, pero también lo hace la barra de desplazamiento: no quiero la barra de desplazamiento debajo, solo quiero que la lista fluya debajo de ella, – dten

+0

y su versión más baja es el nivel de API 11 .. –

0

simplemente utilizar:

getActionBar().setBackgroundDrawable(null); 
+0

¿Alguna vez lo intentó? :) No funciona – dten

+0

Por supuesto que sí, y uso en un producto comercial. Si no funciona para usted, probablemente no haya configurado otros parámetros correctamente. Avíseme si sigue siendo relevante. –

+0

La vista de lista no se extiende debajo de la barra de acciones luego – dten

1

no veo una manera fácil de hacer esto, pero me han llegado con dos posibles soluciones. Podría haber una opción mucho mejor que obviamente no pude ver.

La primera y más fácil, es crear un archivo de fondo 9patch para usted ActionBar que tiene un área de degradado en expansión y un área opaca fija en el lado derecho, del mismo lado que la barra de desplazamiento. De esta forma, la barra de desplazamiento aún estaría debajo de la barra de acciones, pero estaría oculta. Sin embargo, tendría el efecto de que la barra de desplazamiento desaparece/se hace más pequeña.

Otra opción sería la de modificar la barra de desplazamiento en el xml de esta manera:

<ListView android:scrollbarThumbVertical="@drawable/YOUR_CUSTOM_THUMB" ></ListView> 

continuación, crear una barra de desplazamiento con un desplazamiento transparente en la parte superior.

Pensando en ello, creo que la segunda opción es probablemente la mejor opción y le dará el mejor resultado. Me doy cuenta de que es un hack bastante cutre. Al buscar una forma de código para hacerlo, creo que tendrías que extender un número de clases y anular una gran cantidad de métodos.

Cuestiones relacionadas