Ocultar barra de acciones en una actividad de fragmentos
Estoy creando el marco para una aplicación y deseo ocultar la barra de acción para la actividad de inicio de sesión. La aplicación va a ser totalmente compuesto de fragmentos porque son impresionantes.
Puedo ocultar la barra de acción muy bien para mi actividad, pero cada vez que ejecuto la aplicación veo mi fragmento en blanco inflado y la barra de acción predeterminada durante unos 2 segundos antes de que logre inflar el fragmento de inicio de sesión.
- Mostrar / ocultar ProgresBar en ActionBar en android API inferior a 11
- ActionBarActivity requestFeature se debe llamar antes de agregar contenido
- Navegación posterior con Fragmentos / Barra de herramientas
- Error al usar Robolectric para probar un ActionBarActivity
- Agregar barra de herramientas a la actividad causa NoClassDefFoundError
¿Alguna idea de cómo / dónde debo ocultar la barra de acción, (manteniendo mi marco) para evitar que esto suceda?
LoginActivity.java
public class LoginActivity extends SingleFragmentActivity { @Override protected Fragment createFragment() { return new LoginFragment(); }
}
SingleFragmentActivity.java
public abstract class SingleFragmentActivity extends ActionBarActivity { protected abstract Fragment createFragment(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(this instanceof LoginActivity){ ActionBar actionBar = getSupportActionBar(); actionBar.hide(); } setContentView(R.layout.activity_fragment); FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragmentContainer); if (fragment == null) { fragment = createFragment(); fm.beginTransaction() .add(R.id.fragmentContainer, fragment) .commit(); } }
}
LoginFragment.java
public class LoginFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_login, parent, false); return v; }
}
Originalmente tenía SingleFragmentActivity extender FragmentActivity y lo hizo en la instrucción if:
requestWindowFeature(Window.FEATURE_NO_TITLE);
Pero tengo la sensación de que es sólo una forma diferente de hacer lo mismo
Editar:
También he intentado fijar el fragment_activity para utilizar un diverso estilo pero no parece trabajar tampoco:
<style name="NoActionBar" parent="Widget.AppCompat.ActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> </style>
- No se puede cambiar el tema Appcompat de luz a holo oscuro
- ¿Cómo agregar ActionBar a una actividad que ya extiende ListActivity?
- Cambiar Icono Del Cajón De Navegación
- La aplicación se bloquea al extender ActionBarActivity
- Android: SlidingMenu y ActionBarActivity
- La barra de herramientas de AppCompat v7 no funciona
- ¿Cómo agregar un único elemento de menú a la barra de herramientas de android?
- ActionBarActivity botón de retroceso no estallar de backstack
Bueno, después de unas horas creo que he encontrado la solución para mantener los fragmentos en su lugar para todo y la eliminación de la barra de acción (para todos los dispositivos) para la actividad de lanzamiento sólo:
Manifiesto de Android:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.app" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name="com.company.app.LoginActivity" android:theme="@style/NoActionBar" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
Donde el estilo se define así:
<style name="NoActionBar" parent="Theme.AppCompat.Light"> <item name="android:windowNoTitle">true</item> </style>
Eso tomó un tiempo para entender porque no hay Theme.AppCompat.Light.NoActionBar, la barra de acción es básicamente conocida como la barra de título en las API más antiguas, y cuando apliqué ese estilo a la actividad en sí (que pensé que era el único Manera de utilizar temas dinámicos) no parece funcionar en absoluto.
Así que esperemos que esta solución sencilla mantendrá la barra de acción para cualquier otra actividad y puede ayudar a alguien en el futuro 🙂
prueba esto:
if(this instanceof LoginActivity) { if (getActionBar().isShowing()) getActionBar().hide(); } else { if (getActionBar().isShowing()) getActionBar().hide(); }
o
if(this instanceof LoginActivity){ ActionBar actionBar = getSupportActionBar(); actionBar.hide(); } else { ActionBar actionBar = getSupportActionBar(); actionBar.hide(); }
El comentario de Daniel Wilson arriba funciona, pero sólo una pequeña diferencia en cómo lo hice. No definí estilo en absoluto, todo lo que hice en AndroidManifext.xml es que agregué esto a mi actividad:
android:theme="@style/Theme.AppCompat.NoActionBar"
Por lo tanto, no tuve que redefinir el estilo de NoActionBar, Acabo de añadir de Theme.AppCompat
Estoy utilizando este código en Activity.onCreate ()
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Hiding the title bar has to happen before the view is created requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main); // ... }
- ¿Cómo puedo hacer que una imagen se agite / se mueva cuando se hace clic?
- Variables de getResources (). GetStringArray () de Android