Comment puis-je forcer la barre d'action à être en bas dans ICS?

Ice Cream Sandwich (Android 4.0) ajoute l'option d'avoir la Action Bar en bas de l'écran sur les téléphones, et c'est quelque chose que j'aimerais avoir dans une application mienne. Les docs mentionnent uiOptions="splitActionBarWhenNarrow" pour quand vous voulez quelque chose, c'est-à-dire des onglets, en haut et les raccourcis de la Action Bar en bas. J'ai essayé d'ajouter la ligne dans le manifeste de l'application, comme décrit dans les documents, mais je ne l'ai pas encore travaillé.

Voici un exemple:

  • Gradle ne peut pas trouver la dépendance Google Play
  • Comment puis-je changer le langage de ma demande?
  • Quel est l'avantage de ViewHolder?
  • Eclipse Juno ne créera pas d'activité Android
  • Comment activer les contrôles de zoom et pincer le zoom dans un WebView?
  • Acceptation d'un certificat pour HTTP sur Android
  • Entrez la description de l'image ici

    En outre, j'ai remarqué que sur mon Galaxy Nexus, qui exécute ICS, que l'application de messagerie a la Action Bar bas et rien que le titre sur le dessus, il faut donc forcer la Action Bar à être en bas.

    Des idées?

  • Déplacer la vue de texte uniquement lorsque le clavier virtuel s'ouvre sur Android
  • Plusieurs fichiers dex définissent <mon paquet> / BuildConfig, ne peuvent pas trouver la cause:
  • Focusable EditText dans ListView et onItemClick
  • CollapsingToolbarLayout ne reconnaît pas le défilement
  • Comment mettre / obtenir plusieurs JSONObjects dans JSONArray?
  • Comment récupérer des données de la classe de curseur
  • 5 Solutions collect form web for “Comment puis-je forcer la barre d'action à être en bas dans ICS?”

    J'ai essayé d'ajouter la ligne dans le manifeste de l'application, comme décrit dans les documents, mais je ne l'ai pas encore travaillé.

    Cela a fonctionné pour moi dans cet exemple de projet . Voici le manifeste:

     <?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> 

    En outre, j'ai remarqué que sur mon Galaxy Nexus, qui exécute ICS, que l'application de messagerie a la barre d'action en bas et rien que le titre sur le dessus, il faut donc forcer la barre d'action à être en bas.

    Si vous faites référence à la liste de conversation, c'est l' ActionBar en haut et en bas, en utilisant splitActionBarWhenNarrow et le code de configuration suivant:

     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); } 

    J'utilise ActionBarSherlock et j'ai eu un problème similaire. Je l'ai résolu en mettant android:uiOptions="splitActionBarWhenNarrow" dans la <activity> plutôt que sur la <application> .

    Par exemple, cela a fonctionné:

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

    Et cela n'a pas marché:

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

    Modifier ici est l'image :). InstaGram ActionBar + Bottom Bar

    Retour à nouveau avec les meilleurs résultats :). La première chose que vous devez faire est de créer un nom de mise en page, 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> 

    Ensuite, passez à votre classe MainActivity.class et créez cette méthode.

      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)); } 

    setupActionBar(); À votre activité onCreate Activity et exécutez votre application :).

    Maintenant vous avez CustomBar personnalisé avec les diviseurs et les images PS le diviseur est défini dans la mise en page en tant que fond d'image :).

    Bien, vous ne pouvez pas forcer à rester au bas sur les tablettes, mais si oui, vous pouvez le faire par le biais du manifeste. Mais vous pouvez faire quelque chose est similaire à la barre inférieure et la barre supérieure. Dans cet exemple, je vais vous montrer comment utiliser fusion pour faire cela facilement sans avoir besoin d'utiliser Android ActionBar.

    La première chose que vous devez créer est votre main_activity.xml dans mon cas, le main_activity.xml ne contient que main_activity.xml sur RelativeLayout. Voici le code.

     <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> 

    Comme vous pouvez le voir dans le code ci-dessus, il y a deux fusions que j'ai placées dans l' main_activity.xml défini au bas et l'autre défini au sommet. Voici la fausse barre inférieure 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> 

    Je pose un arrière-plan fixe à LinearLayout et LinearLayout l' LinearLayout pour onClicks.

    Et voici la barre supérieure. `

     <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> 

    `

    Qui copier également la pâte dans la barre inférieure ci-dessus. Il suffit de changer une chose de android:layout_alignParentBottom="true" pour android:layout_alignParentTop="true" et vous avez un jeu d'action en bas et en haut. Dans ce cas, vous ne devrez pas utiliser ActionBar, alors je vous suggère d'utiliser Theme.Holo.NoActionBar

    Et voici le résultat de l'image: – http://i.imgur.com/N8uKg6v.png

    C'est un projet sur lequel je travaille maintenant. Fait presque tout, mais toujours en difficulté avec le design. J'espère que ma réponse vous sera bénéfique. Veuillez voter la réponse si vous l'avez trouvé intéressant.
    meilleures salutations. ~ Kosh

    essaye ça…

     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); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.