Deux barres d'action (en Bas et en Haut) en même temps?
J'ai besoin de faire deux barres d'action , je suis en utilisant actionBarSherlock par la voie . Donc ce que j'ai besoin est de mettre un "écran d'Accueil" changer de sur la normale de la barre d'action , et d'ajouter deux normal ActionBar les options de l'Action . Semblable à ce dont j'ai besoin sont Gmail et Maps ici : http://cdn.androidcommunity.com/wp-content/uploads/2012/03/Screenshot_2012-03-28-12-58-16.png (Ils ne me permet pas de poster une image pour la réputation est faible , voir le lien s'il vous plaît)
Cette app de Cartes a un haut et le bas de la barre d'action , exactement ce dont j'ai besoin , car une fois que j'arrive au point où je peux ajouter la deuxième actionbar je sais par où commencer ...
J'ai cherché pendant environ une semaine sur ce sujet et j'ai trouvé quelques questions similaires , mais toutefois j'ai bien compris non des réponses, les réponses étaient environ une vue personnalisée qui je ne suis pas (du tout) familier avec et je ne comprends pas une chose , mais oui, j'ai essayé de faire un affichage personnalisé à partir de ce que j'ai pensé est de droite et j'ai eu crrassshheesss qui je n'ai pas trouvé de solution ... Si vous pouvez svp me montrer comme un exemple de cette application Maps, comment est-il à l'aide de ces deux barres d'action ?? (Je ne veux pas naviguer comme dans les maps et gmail , mais seulement les deux actionbars)
Ici est une partie de mon code :
//Part of my MainActivity.class
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
MenuInflater inf = getSupportMenuInflater();
inf.inflate(R.menu.upper_navbar, menu);
final String name = "welcome";
final SharedPreferences pref = getSharedPreferences(name, 0);
final Editor edit = pref.edit();
boolean oldState = pref.getBoolean("w", true);
ToggleButton tog = (ToggleButton) menu.findItem(R.id.welcome_screen).getActionView();
if(oldState){
tog.setChecked(true);
}else{
tog.setChecked(false);
}
tog.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
edit.putBoolean("w", true);
edit.apply();
}else{
edit.putBoolean("w", false);
edit.apply();
}
}
});
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
Mon Manifeste :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="seaskyways.editpad"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="16" />
<application
android:allowBackup="true"
android:name="android.app.Application"
android:icon="@drawable/ic_launcher"
android:uiOptions="splitActionBarWhenNarrow"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="seaskyways.editpad.MainActivity"
android:label="MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="seaskyways.editpad.Splash"
android:theme="@style/Theme.Sherlock.Dialog.NoActionBar"
android:label="Splash" >
<intent-filter>
<action android:name="android.intent.action.SPLASH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
Et mes menus qui j'ai l'intention de les mettre dans mes barres d'action ...
menu\activity_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/bottom_copy" android:title="Copy" android:orderInCategory="3" android:showAsAction="ifRoom|withText" />
<item android:id="@+id/bottom_paste" android:title="Paste" android:orderInCategory="2" android:showAsAction="ifRoom|withText" />
</menu>
menu\upper_navbar.xml (Doit avoir nommé il upper_actionbar mais c'est juste une pensée erreur , c'est un nom après tout , :/plz )
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/welcome_screen"
android:orderInCategory="1"
android:showAsAction="ifRoom|withText"
android:title="Welcome Screen"
android:actionLayout="@layout/toggle"
/>
</menu>
Si vous avez besoin de plus d'informations s'il vous plaît dites-moi , je vous dis , c'est pour moi et pour tout le monde après tout !
MODIFIER !!! : J'ai trouvé un bien à proximité d'exemple à ma question , les paramètres wifi (http://omgdroid.com/wp-content/uploads/2012/07/Screenshot_2012-07-06-01-34-29-576x1024.png) Il utilise un commutateur normalement actionbar et de normal de split actionbar ! Exactement ce dont j'ai besoin !
EDIT 2 !!!! : Voici une capture d'écran de mon Galaxy nexus à l'aide d'une ROM custom basée sur psba , C'est exactement ce dont j'ai besoin, et signifie :
Paramètres Wi-Fi: https://lh4.googleusercontent.com/-aeL_sHjIcQQ/UPVptGQiuqI/AAAAAAAAAGE/UGc-CuLP4Qw/s512/Screenshot_2013-01-15-16-36-32.png
Paramètres Bluetooth: lh3*googleusercontent.com/-4j6ca1Nm1VI/UPVqAiDn_PI/AAAAAAAAAGM/LLB2ILWVjQY/s512/Screenshot_2013-01-15-16-38-14.png
MODIFIER 3 !!! : Beaucoup de progrès dans mon enquête dans le Bluetooth et le Wifi , et comme je l'ai dit et demandé , ils étaient de vrais actionbars ! voir ce que j'ai obtenu dans les Paramètres Bluetooth:
BluetoothSettings.classe/onCreateOptionsMenu :
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
if (mLocalAdapter == null) return;
boolean bluetoothIsEnabled = mLocalAdapter.getBluetoothState() == BluetoothAdapter.STATE_ON;
boolean isDiscovering = mLocalAdapter.isDiscovering();
int textId = isDiscovering ? R.string.bluetooth_searching_for_devices :
R.string.bluetooth_search_for_devices;
menu.add(Menu.NONE, MENU_ID_SCAN, 0, textId)
.setEnabled(bluetoothIsEnabled && !isDiscovering)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add(Menu.NONE, MENU_ID_RENAME_DEVICE, 0, R.string.bluetooth_rename_device)
.setEnabled(bluetoothIsEnabled)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
menu.add(Menu.NONE, MENU_ID_VISIBILITY_TIMEOUT, 0, R.string.bluetooth_visibility_timeout)
.setEnabled(bluetoothIsEnabled)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
menu.add(Menu.NONE, MENU_ID_SHOW_RECEIVED, 0, R.string.bluetooth_show_received_files)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
super.onCreateOptionsMenu(menu, inflater);
}
Ceux-ci peuvent être des options sont clairement indiqués dans le splitActionBarDown avec les propriétés exactes ...
maintenant :
BluetoothSettings.classe/addPreferencesForActivity :
@Override
void addPreferencesForActivity() {
addPreferencesFromResource(R.xml.bluetooth_settings);
Activity activity = getActivity();
Switch actionBarSwitch = new Switch(activity);
if (activity instanceof PreferenceActivity) {
PreferenceActivity preferenceActivity = (PreferenceActivity) activity;
if (preferenceActivity.onIsHidingHeaders() || !preferenceActivity.onIsMultiPane()) {
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
actionBarSwitch.setPadding(0, 0, padding, 0);
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(actionBarSwitch, new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.END));
}
}
mBluetoothEnabler = new BluetoothEnabler(activity, actionBarSwitch);
setHasOptionsMenu(true);
}
De noter que cette classe n'est pas l'extension de l'Activité , il extends DeviceListPreferenceFragment
...
Maintenant que nous savons il est possible d'avoir deux actionbars(split et de la normale) dans le même temps , nous avons besoin d'un moyen pour simplifier que , peut-être par une classe ou à la bibliothèque ??
OriginalL'auteur Seaskyways | 2013-01-14
Vous devez vous connecter pour publier un commentaire.
Qui est un fractionnement de la barre d'action. Il est disponible pour combiné les appareils avec un écran d'une largeur de 400dp<
Pour activer le fractionnement de la barre d'action, il suffit d'ajouter
uiOptions="splitActionBarWhenNarrow"
de votre ou de l'élément manifest.Edit:
La deuxième image est en effet pas un fractionnement de la barre d'action. Ce sont juste les boutons avec le buttonBarButtonStyle attribut. Regarder dans cette ici.
Edit:
splitActionBarWhenNarrow
a été obsolète.En fait, je soupçonne qu'Ahmad a bien lu la question, car il a la bonne réponse.
Lire la modifier s'il vous plaît ...
J'ai édité ma réponse.
Cela pourrait m'aider plus tard , mais il ne veut pas me répondre :/ voir la deuxième édition qui est absolument une barre d'action (un commutateur et splitActionBar en bas) ...
OriginalL'auteur Ahmad
Alors vous êtes sur votre propre. Ce n'est pas pris en charge dans Android ou ActionBarSherlock, autres que le fractionnement de la barre d'action, qui vous a rejeté.
Qui est une scission de la barre d'action, particulièrement en utilisant des superpositions. Cet exemple de projet illustre cette technique.
Ensuite utiliser le fractionnement de la barre d'action, via
android:uiOptions="splitActionBarWhenNarrow"
dans votre<activity>
élément, la façon dont les Cartes ne. Les principales Cartes de l'activité utiliseandroid:uiOptions="splitActionBarWhenNarrow"
.Comme indiqué ci-dessus, cet exemple de projet illustre cette technique.
Cartes est en utilisant une fraction de la barre d'action.
Dans votre capture d'écran, vous remarquerez que les Cartes a un fractionnement de la barre d'action, et ils sont tous les deux sur l'écran en même temps. C'est la façon de diviser les barres d'action de travail, dans les situations. La même application Cartes ne montrent pas la division action de la barre lorsque l'écran n'est pas actuellement étroit.
Ce n'est pas deux barres d'action. Ceux sont les deux boutons en bas de la mise en page, ou quelque chose le long de ces lignes. D'Action la barre d'action de l'élément de noms sont en majuscules, par exemple.
Voir le psba version , vous verrez absolue de la barre d'action ...
Et votre capture d'écran n'est pas de l'AFST version. L'AFST version de cet écran n'a pas les boutons du bas, mais utilise à la place un fractionnement de la barre d'action, où le "Scan" et "Avancé" apparaissent dans l'action de débordement.
ce n'est pas ma capture d'écran btw , j'ai charger ma capture d'écran quelque part , à consulter ...
OriginalL'auteur CommonsWare
//c'est la ligne principale pour que
C'est la ligne principale pour bottam côté
android:uiOptions="splitActionBarWhenNarrow"
OriginalL'auteur Amitsharma