support library last example android android-fragments android-actionbar android-support-library

android - library - Barra de acción con biblioteca de soporte y contenido de superposición de fragmentos



fragment android example (4)

Agregue un encabezado de lista vacío adicional con el tamaño de la barra de acción. Debería ser una buena solución.

Agregué el android-support-library-v7-appcompat a mi proyecto para admitir ActionBar desde el nivel 7 de API anterior.

Funciona como un hechizo en android 4.0+ y también en android 2.3 con una Activity normal que tiene setContentView en onCreate, pero cuando la actividad está cargando un fragmento en onCreate, ActionBar se superpone con el contenido de mi diseño. En todos los demás escenarios, la barra de acción funciona bien.

Aquí hay un código:

class AssetsActivity extends ActionBarActivity{ @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); OpenLocalFragment assets = OpenLocalFragment.newInstance(index); assets.setArguments(getIntent().getExtras()); getSupportFragmentManager().beginTransaction() .add(android.R.id.content, assets).commit(); } }

El tema de esta actividad se establece en el manifiesto a:

@ style / Theme.AppCompat

Este es el resultado en Android 2.3 (en 4.0+, la barra de acción muestra bien)

Puede ver que el primer elemento de lisview está superpuesto a la barra de acción (icono de la ronda blanca y título "Mi actividad")

¿Es posible que haya encontrado un error en la biblioteca de soporte, que se haya publicado solo durante 2 días ahora? Gracias a todos.


Otra alternativa si no desea modificar el código fuente de android-support-library-v7-appcompat es agregar un diseño vacío en el archivo xml de diseño, como:

<LinearLayout android:id="@+id/content_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"/>

y haga el llamado al fragmento para agregar a ese diseño en su lugar:

ft.add(R.id.content_view, mFragment, mTag);


Parece un poco tarde para contribuir, pero tuve el mismo problema y no he visto la respuesta aquí ...

Verifique su archivo styles.xml, podría haber un atributo xml para superponer la barra de acciones establecida en verdadero, es decir

cierto

Toda la entrada se ve así.

<item name ="actionBarTabTextStyle" > @style/TabTextStyle</item> <item name = "windowActionBarOverlay">true</item>

Si ese es el caso, simplemente cambie el valor de "windowActionBarOverlay" a falso.


Edición: esto ya se ha corregido oficialmente y se ha publicado en Support Library v19 .

Como JJD comentó a continuación, puede usar normalmente android.R.id.content con appcompat-v7 r.19.0.0 o más reciente. El botón de inicio también funciona.

Con otras palabras: la solución a continuación no es más necesaria si usa la versión 19.0.0 o más reciente.

Tengo la respuesta en code.google.com . He hecho un resumen de la respuesta de Frederic:

Para los dispositivos pre ICS debes usar:

R.id.action_bar_activity_content

en lugar de

android.R.id.content

R.id.action_bar_activity_content es una nueva identificación utilizada en el diseño para mostrar el contenido de la aplicación, parece que reemplaza a android.R.id.content cuando usa la aplicación v7 appcompat ActionBarActivity.

Puede usar este código para recuperar la identificación correcta del contenido de la actividad:

public static int getContentViewCompat() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH ? android.R.id.content : R.id.action_bar_activity_content; }

Gracias a Frederic