how - toolbar custom android
Esta actividad ya tiene una barra de acción provista por la decoración de la ventana. (17)
Agregue estas dos líneas en el tema de su aplicación ubicado en style.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
//Add this two line will fix your problem
<item name="windowNoTitle">true</item> <--1(this applies after 22.0.1 support library i think
<item name="windowActionBar">true</item> <--2
Intento moverme sobre mis cosas para usar la Toolbar
de Toolbar
lugar de la barra de acción, pero me sigue diciendo un error
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tyczj.weddingalbum/com.xxx.xxx.MainActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
at android.support.v7.app.ActionBarActivityDelegateBase.setSupportActionBar(ActionBarActivityDelegateBase.java:165)
at android.support.v7.app.ActionBarActivity.setSupportActionBar(ActionBarActivity.java:92)
at com.xxx.xxx.MainActivity.onCreate(MainActivity.java:113)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Entonces agregué mi estilo para que mi actividad no tuviera barra de acción.
<style name="AppCompatTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:windowActionBar">false</item>
</style>
Y el tema se aplica a las actividades en mi manifiesto.
<activity
android:name=".MainActivity"
android:windowSoftInputMode="adjustResize|stateHidden"
android:theme="@style/AppCompatTheme" android:screenOrientation="portrait"/>
MainActivity extiende GooglePlayServiceActivity por lo que también configuro el tema allí también
<activity
android:name=".GooglePlayServicesActivity"
android:label="@string/title_activity_google_play_services"
android:theme="@style/AppCompatTheme">
Pero todavía me sale el error. Tampoco solicito función de ventana en ninguna parte. ¿Alguna idea de por qué todavía me sale esto?
Agregue esto en sus valores / estilos.xml
<style name="YourCustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>
<style name="AppBaseTheme" parent="YourCustomTheme">
</style>
<style name="AppTheme" parent="AppBaseTheme">
</style>
Y agregue el siguiente código en los valores-v11 / styles.xml y values-v14 / styles.xml
<style name="AppBaseTheme" parent="YourCustomTheme">
</style>
Eso es. Funcionará.
Agregue una línea de android:theme="@style/AppTheme.NoActionBar"
a la activity
en AndroidManifest
y ya está.
AndroidManifest.xml :
<activity android:name=".activity.YourActivity"
android:theme="@style/AppTheme.NoActionBar"><!-- ADD THIS LINE -->
styles.xml
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Así es como resolví el problema. Agregue el siguiente código en su AndroidMainfest.xml
<activity android:name=".YourClass"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</activity>
Creo que estás desarrollando para Android Lollipop, pero de todos modos incluye esta línea:
<item name="windowActionBar">false</item>
a su declaración de tema dentro de su app/src/main/res/values/styles.xml
.
Además, si está utilizando la biblioteca de soporte de AppCompatActivity
de la versión 22.1 o superior, agregue esta línea:
<item name="windowNoTitle">true</item>
Su declaración de tema puede verse así después de todas estas adiciones:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
En pocas palabras, puedes hacer lo siguiente:
if (android.os.Build.VERSION.SDK_INT >= 21) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(getResources().getColor(R.color.colorPrimaryDark));
}
He añadido la barra de herramientas en mi xml. Luego en mi actividad estaba agregando esta declaración:
setSupportActionBar(toolbar);
Eliminar esto funcionó para mí. Espero que esto ayude a alguien.
Lo resolví eliminando esta línea:
android:theme="@style/Theme.MyCompatTheme"
de propiedades de actividad en el Manifest file
Necesitas cambiar
<activity
android:name=".YOUR ACTIVITY"
android:theme="@style/AppTheme.NoActionBar" />
</application>`
estas líneas en el manifiesto. Funcionará perfectamente para mí.
Otra forma fácil es hacer que su tema sea un hijo de Theme.AppCompat.Light.NoActionBar
de Theme.AppCompat.Light.NoActionBar
manera:
<style name="NoActionBarTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
</style>
Para usar la barra de herramientas como una barra de acción, primero deshabilite la barra de acción provista por la decoración.
La forma más fácil es tener su tema extendido desde
Theme.AppCompat.NoActionBar
(o su variante de luz).
En segundo lugar, cree una instancia de la barra de herramientas, generalmente a través de su diseño XML:
<android.support.v7.widget.Toolbar
android:id=”@+id/my_awesome_toolbar”
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:minHeight=”?attr/actionBarSize”
android:background=”?attr/colorPrimary” />
Luego, en tu actividad o fragmento, configura la barra de herramientas para que actúe como tu barra de acción:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
}
Este código funcionó para mí.
Si desea combinar algunas actividades con la barra de acción y otras no, debe usar el tema base, tener habilitada la barra de acción y luego crear un tema secundario que usará en actividades que no requieren la barra de acción.
Por ejemplo, puedes usar un estilo secundario como este.
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Mientras que el tema base se extiende digamos
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
y luego use el tema de la barra de acciones en el archivo AndroidManifest dentro de la etiqueta de actividad, por ejemplo
<activity
android:name="com.example.NonActionBarActivity"
android:theme="@style/AppTheme.NoActionBar"
debe aplicar esto a cada actividad individual que no necesite la barra de acción, por lo que si su proyecto requiere menos actividades de la barra de acción que no, entonces es mejor aplicar esto en el nivel del tema base
Si está utilizando la Actividad Appcompact
use estas tres líneas en su tema.
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowActionBarOverlay">false</item>
Si obtiene el error en esta línea:
setSupportActionBar(...);
Debe comprobar si su actividad se refiere a un tema que contiene una barra de herramientas. Es posible que el AppTheme de su aplicación ya contenga una barra de herramientas, como
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
y usted está tratando de agregar un segundo. Si desea utilizar AppTheme de su aplicación, debe eliminar el tema de su actividad, en el archivo manifest.xml.
Por ejemplo:
<activity
android:name=".ui.activities.SettingsActivity"
android:theme="@style/AppTheme1" /> --> remove this theme
Simplemente ponga parent="Theme.AppCompat.NoActionBar"
en su archivo style.xml
Me gusta - <style parent="Theme.AppCompat.NoActionBar" name="AppTheme.NoActionBar">
También me enfrenté con el mismo problema. Pero utilicé:
getSupportActionBar().hide();
antes de
setContentView(R.layout.activity_main);
Ahora está funcionando.
Y podemos probar otra opción en Style.xml ,
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Vaya al ''style.xml'' de su proyecto y haga que windowActionBar sea false
<style name="AppCompatTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:windowActionBar">false</item>
</style>