Come posso forzare la barra d'azione a trovarsi in fondo nell'ICS?

Sandwich di gelato (Android 4.0) aggiunge l'opzione di avere la Action Bar nella parte inferiore dello schermo sui telefoni e questo è qualcosa che mi piacerebbe avere in una mia applicazione. I docs citano uiOptions="splitActionBarWhenNarrow" per quando si desidera qualcosa, cioè tabs, in alto e scorciatoie a Action Bar in basso. Ho provato ad aggiungere la row nel manifesto dell'applicazione, come descritto nei documenti, ma non ho ancora funzionato finora.

Ecco un esempio:

  • Multilingue TextView con width "wrap_content"
  • Android - quando esci da un WebView, l'audio continua a suonare
  • Errore "La connessione al server non è rioutput" in Cordova e jQuery
  • Come funziona una properties; '.class'?
  • L'esecuzione di HttpClient continua a dare ConnectTimeoutException
  • get i dati dall'arrays Json nell'arrays di Json Android Java
  • immettere qui la descrizione dell'immagine

    Inoltre, ho notato che sul mio Galaxy Nexus, che gestisce l'ICS, che l'applicazione di messaggistica ha la Action Bar il fondo e nient'altro che il titolo in cima, quindi deve essere in qualche modo forzato la Action Bar in fondo.

    Qualche idea?

  • Registrare / catturare la riproduzione audio interna di app Android e esportre mp3?
  • Best practice per la definizione degli events dei pulsanti in android
  • Corretta logica di elaborazione Pixel per DICOM JPEG (RGB) per l'applicazione del filter di width e livello della window
  • Rileva quando l'emulatore Android è completamente avviato
  • Crea l'intenzione android di "utilizzo della batteria"
  • Attività Android a schermo integer con barra d'azione
  • 5 Solutions collect form web for “Come posso forzare la barra d'azione a trovarsi in fondo nell'ICS?”

    Ho provato ad aggiungere la row nel manifesto dell'applicazione, come descritto nei documenti, ma non ho ancora funzionato finora.

    Ha lavorato per me in questo progetto di esempio . Ecco il manifesto:

     <?xml version="1.0" encoding="utf-8"?> <manifest package="com.commonsware.android.actionbarbc" xmlns:android="http://schemas.android.com/apk/res/android"> <application android:hardwareAccelerated="true" android:icon="@drawable/cw" android:label="@string/app_name"> <activity android:label="@string/app_name" android:name=".InflationDemo" android:uiOptions="splitActionBarWhenNarrow"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11" /> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true" /> </manifest> 

    Inoltre, ho notato che sul mio Galaxy Nexus, che gestisce ICS, che l'applicazione di messaggistica ha la barra d'azione il fondo e nient'altro che il titolo in cima, quindi deve essere in qualche modo forzato la barra d'azione a essere in basso.

    Se si fa riferimento all'elenco di conversazione, cioè l' ActionBar in alto e in basso, utilizzando splitActionBarWhenNarrow e il seguente codice di installazione:

     private void setupActionBar() { ActionBar actionBar = getActionBar(); ViewGroup v = (ViewGroup)LayoutInflater.from(this) .inflate(R.layout.conversation_list_actionbar, null); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setCustomView(v, new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL | Gravity.RIGHT)); mUnreadConvCount = (TextView)v.findViewById(R.id.unread_conv_count); } 

    Sto utilizzando ActionBarSherlock e ho avuto un problema simile. Lo ho risolto mettendo android:uiOptions="splitActionBarWhenNarrow" all'interno del tag <activity> , piuttosto che il tag <application> .

    Ad esempio, questo ha funzionato:

     <activity android:name=".my.Activity" android:uiOptions="splitActionBarWhenNarrow"/> 

    e questo non funzionava:

     <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.slowchop.etc" android:uiOptions="splitActionBarWhenNarrow"> 

    Modifica qui è l'image :). InstaGram ActionBar + Bottom Bar

    torna di nuovo con i migliori risultati :). la prima cosa che devi fare è creare un nome di layout header.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="@dimen/action_bar_height" android:layout_gravity="top" android:baselineAligned="true" android:orientation="horizontal" > <ImageView android:id="@+id/share" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="start" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/action_bar_glyph_back" /> <ImageView android:id="@+id/bright" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/action_bar_glyph_lux" /> <ImageView android:id="@+id/rotate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/rotate" /> <ImageView android:id="@+id/bright" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/action_bar_glyph_lux" /> <ImageView android:id="@+id/rotate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/rotate" /> <ImageView android:id="@+id/forwa" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/forward" /> </LinearLayout> 

    dopo che andare alla tua attività MainActivity.class e crea questo metodo.

      private void setupActionBar() { ActionBar actionBar = getActionBar(); //actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowTitleEnabled(false); ViewGroup v = (ViewGroup)LayoutInflater.from(this) .inflate(R.layout.header, null); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setCustomView(v, new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL | Gravity.RIGHT)); } 

    aggiungere setupActionBar(); alla tua attività onCreate e gestisci l'applicazione :).

    ora hai ActionBar personalizzato con divisori e immagini PS il divisore è definito nel layout come background di un'image :).

    anche tu non puoi costringerti a rimanere in fondo alle tavolette, ma se sai, puoi farlo attraverso il manifesto. ma si può fare qualcosa è simile alla barra inferiore e bar superiore. in questo esempio ti mostrerò come utilizzare la fusione per farlo facilmente senza la necessità di utilizzare Android ActionBar.

    la prima cosa che devi creare è il tuo main_activity.xml nel mio caso il main_activity.xml contiene solo ImageView su RelativeLayout. ecco il codice.

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <RelativeLayout android:id="@+id/RelativeLayout04" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true"> <include layout="@layout/header" /> </RelativeLayout> <ImageView android:id="@+id/view" android:layout_width="match_parent" android:layout_height="200dp" android:layout_above="@+id/RelativeLayout03" android:layout_below="@+id/RelativeLayout04" android:layout_centerHorizontal="true" android:src="@android:drawable/alert_dark_frame" /> <RelativeLayout android:id="@+id/RelativeLayout03" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true"> <include layout="@layout/tryit" /> </RelativeLayout> 

    come si può vedere nel codice precedente, ci sono due fusioni che ho messo all'interno della main_activity.xml definita in basso e una definita in alto. qui è il falso barra di fondo xml.

     <merge xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="match_parent" android:layout_height="80dp" android:layout_weight="0.14" android:background="@drawable/dock" > <ImageView android:id="@+id/dark" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/stock" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/open" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/border" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.15" /> <ImageView android:id="@+id/color" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.15" /> </LinearLayout> 

    sto mettendo uno background fisso al LinearLayout e falso l'ImageView per onClicks.

    e qui è il bar in alto. `

     <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="match_parent" android:layout_height="40dp" android:layout_weight="0.14" android:background="@drawable/dock1" android:layout_gravity="top"> <ImageView android:id="@+id/darka" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/stocka" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/opena" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/bordera" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.15" /> <ImageView android:id="@+id/colora" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.15" /> </LinearLayout> 

    `

    che copiano anche la pasta dalla barra inferiore sopra. basta cambiare una cosa da android:layout_alignParentBottom="true" a android:layout_alignParentTop="true" e hai un'azioneBar in basso e in alto. in questo caso non avrai bisogno di utilizzare l'ActionBar quindi ti suggerisco di utilizzare Theme.Holo.NoActionBar

    ecco il risultato dell'image: – http://i.imgur.com/N8uKg6v.png

    questo è un progetto che sto lavorando su Now. fatto quasi tutto ma ancora lottando con il design. spero che la mia risposta sia vantaggiosa. si prega di votare la risposta se si è trovato interessante.
    i migliori saluti. ~ Kosh

    prova questo…

     private View contentView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); contentView = getLayoutInflater().inflate(R.layout.activity_main, null); setContentView(contentView); LinearLayout layout = (LinearLayout) contentView.getParent().getParent(); View view = layout.getChildAt(0); layout.removeViewAt(0); layout.addView(view); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.