Android Volver Flecha en la barra de herramientas (AppCompatActivity)
Quiero mostrar el botón de flecha hacia atrás en mi aplicación, pero la aplicación se bloquea cuando coloco esto en mi código:
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true);
Style.xml
- No se puede poner DrawerLayout en StatusBar
- Barra lateral de Android
- Android - ¿cuál es la mejor solución para reducir repetidamente la barra de estado (SYSTEM_UI_FLAG_LOW_PROFILE) en tabletas en modo de pantalla completa?
- La barra de título sigue apareciendo, incluso con requestWindowFeature o android: theme
- Cómo crear un ActionBar personalizado con el cajón de navegación
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/PrimaryColor</item> <item name="colorPrimaryDark">@color/PrimaryColorDark</item> <item name="colorAccent">@color/PrimaryColor</item> <item name="colorControlHighlight">@color/ControlHighlight</item> <item name="android:statusBarColor" tools:targetApi="21">@android:color/transparent</item> </style> <style name="ActionBarPopupThemeOverlay" parent="ThemeOverlay.AppCompat.Light" > <item name="android:textColor">#000000</item> </style> <style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> <item name="tabIndicatorColor">#FFFFFF</item> <item name="tabIndicatorHeight">3dp</item> <item name="tabTextAppearance">@style/MyCustomTabTextAppearance</item> </style> <style name="MyCustomTabTextAppearance" parent="TextAppearance.Design.Tab"> <item name="android:textColor">#FFFFFF</item> </style>
Toolbar.xml
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_height="@dimen/abc_action_bar_default_height_material" android:elevation="0dp" android:layout_width="match_parent" android:id="@+id/toolbar" android:background="@color/PrimaryColor" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ActionBarPopupThemeOverlay"/>
Clase (no Fragmento) :
public class WebViewCanale extends AppCompatActivity { Toolbar toolbar; TextView textView; WebView webView; ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview_canali); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); //Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //FindViewById webView = (WebView) findViewById(R.id.webview); textView = (TextView) findViewById(R.id.textView); progressBar = (ProgressBar) findViewById(R.id.progressBar); //Impostazioni WebView WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setLoadsImagesAutomatically(true); webView.loadUrl(this.getIntent().getDataString()); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.getSettings().setAppCacheEnabled(false); //Titolo Toolbar webView.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); if (!TextUtils.isEmpty(title)) { WebViewCanale.this.setTitle(title); } } }); } }
- Android - Mantenga la notificación estable en Notification Bar
- ProgressBar en ActionBar, como la última actualización de la aplicación de GMail
- Cómo reemplazar el título predeterminado con el título personalizado en android
- Muestra la barra de progreso sin congelar la aplicación
Me pregunto por qué no hay una respuesta completa para esto en SO, pero finalmente he resuelto el asunto por mi cuenta:
Utilice el fragmento siguiente para tener el botón Atrás en la barra de herramientas en una AppCompatActivity :
toolbar = (Toolbar) findViewById(R.id.hack_toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //do something you want } });
También puede declarar en el Manifest
una ParentActivity
con: <android:ParentActivityName=".TheActivityThatCalledThisOne">
Añadir este tema:
<style name="AppTheme2" parent="Theme.AppCompat.Light"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <item name="colorPrimary">@color/appColor</item> <item name="colorControlNormal">@color/whiteColor</item> <item name="colorControlActivated">@color/appColor</item> </style>
Y en su actividad:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Debe configurar la barra de acción de soporte primero antes de que pueda obtenerla. Así que coloque el siguiente código
toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);
Antes de este Código
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true);
@BindView(R.id.toolbar) Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_events); ButterKnife.bind(this); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onSupportNavigateUp() { onBackPressed(); return true; }
onSupportNavigateUp()
Este método se llama siempre que el usuario elige navegar en la jerarquía de actividades de la aplicación desde la barra de acciones.
onBackPressed();
Tenga cuidado de hacer estallar la pila trasera del fragmento o terminar la actividad según corresponda.