Zwei action-Balken (Unten und Oben) in der gleichen Zeit?
Habe ich zwei Aktionsleisten , ich bin mit actionBarSherlock durch die Art und Weise . Also, was ich genau brauchen, ist an einen "Willkommen-Bildschirm" Umschalten auf die normale action bar , und fügen Sie zwei normale ActionBar Handlungsoptionen . Ähnlich zu dem, was ich brauche, sind Google Mail und Google Maps wie hier : http://cdn.androidcommunity.com/wp-content/uploads/2012/03/Screenshot_2012-03-28-12-58-16.png (Sie mir nicht erlaubt haben zu posten ein Bild für die reputation niedrig ist , siehe link, bitte)
Diese Karten-app hat eine Obere und untere Aktionsleiste , genau das was ich brauche , weil ich einmal den Punkt erreichen, wo ich das zweite actionbar-ich weiß, wo anfangen ...
Suchte ich nach über eine Woche über dieses Thema und ich habe ein paar ähnliche Fragen , aber ich habe verstanden, nicht der Antworten ; die Antworten wurden über eine benutzerdefinierte Ansicht, die ich nicht bin (überhaupt) vertraut sind, und ich kann nicht verstehen, eine Sache , aber ja, ich habe versucht, eine "benutzerdefinierte Ansicht" aus, was ich dachte, richtig ist, und ich habe crrassshheesss, die ich nicht finden, eine Lösung für ... Wenn Sie plz mir zeigen, als ein Beispiel dieser Karten-app, wie ist es mit diesen beiden action bars ?? (Ich möchte nicht navigieren wie in Google maps und gmail , sondern nur die zwei actionbars)
Hier ist mein 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);
}
Mein Manifest :
<?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>
Und meine Menüs, die ich beabsichtige, Sie in meine Aktionsleisten ...
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 (Sollte es mit dem Namen upper_actionbar aber es ist nur ein Fehler denken , Ihr einen Namen afterall , :/plz gehen )
<?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>
Wenn du mehr info bitte sagen Sie mir , ich werde Ihnen sagen , die für mich und alle anderen afterall !
BEARBEITEN !!! : Fand ich eine viel Nähe Beispiel zu meiner Frage , die wifi-Einstellungen (http://omgdroid.com/wp-content/uploads/2012/07/Screenshot_2012-07-06-01-34-29-576x1024.png) Es verwendet einen Schalter in die normale actionbar und eine normale split actionbar nach unten ! Genau das was ich brauche !
EDIT 2 !!!! : Hier ist ein screenshot von meinem Galaxy nexus mit einer custom ROM über aosp , Das ist genau das was ich brauche und meine :
Einstellungen-Wifi: https://lh4.googleusercontent.com/-aeL_sHjIcQQ/UPVptGQiuqI/AAAAAAAAAGE/UGc-CuLP4Qw/s512/Screenshot_2013-01-15-16-36-32.png
Einstellungen-Bluetooth: lh3*googleusercontent.com/-4j6ca1Nm1VI/UPVqAiDn_PI/AAAAAAAAAGM/LLB2ILWVjQY/s512/Screenshot_2013-01-15-16-38-14.png
EDIT 3 !!! : Große Fortschritte in meiner Untersuchung in die Bluetooth-und Wifi , und als ich gesagt habe, und fragte , waren Sie wahr actionbars ! sehen Sie, was habe ich in Einstellungen-Bluetooth:
BluetoothSettings.Klasse/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);
}
Diese können Optionen sind deutlich in den splitActionBarDown mit den genauen Eigenschaften bis ...
nun :
BluetoothSettings.Klasse/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);
}
Darauf hingewiesen, dass diese Klasse nicht erweitern Aktivität , es extends DeviceListPreferenceFragment
...
Nun, dass wir wissen, es möglich zwei actionbars(split und normal) in der gleichen Zeit , wir brauchen eine Möglichkeit, zu vereinfachen, die , vielleicht durch eine Klasse oder Bibliothek ??
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist ein split action bar. Es ist verfügbar für handset-Geräte mit einer Bildschirmbreite von 400dp<
Zum aktivieren der split action bar, fügen Sie einfach
uiOptions="splitActionBarWhenNarrow"
zu Ihr oder manifest-element.Bearbeiten:
Das zweite Bild ist in der Tat nicht ein split action bar. Dies sind nur die Schaltflächen mit der buttonBarButtonStyle Attribut. Schauen Sie in diese hier.
Edit:
splitActionBarWhenNarrow
wurde veraltet.Dann sind Sie auf Ihrem eigenen. Dies ist unter Android nicht unterstützt oder ActionBarSherlock, andere als die split action bar, die Sie entlassen.
Ist ein split action bar, insbesondere eine Verwendung von overlays. Dieses Beispiel-Projekt veranschaulicht diese Technik.
Dann verwenden Sie den split action bar, über
android:uiOptions="splitActionBarWhenNarrow"
in Ihrem<activity>
element, die Art und Weise, dass die Karten nicht. Die wichtigsten Karten-Aktivität verwendetandroid:uiOptions="splitActionBarWhenNarrow"
.Wie oben erwähnt, dieses Beispiel-Projekt veranschaulicht diese Technik.
Karten ist mit Hilfe eines split action bar.
In deinem screenshot, Sie werden feststellen, dass Karten eine split action bar, und Sie sind beide auf dem Bildschirm zur gleichen Zeit. Dies ist der Weg, aufgeteilt action bars arbeiten, auch in engen Situationen. Die gleichen Karten-app zeigt nicht die split action bar, wenn der Bildschirm, die gegenwärtig nicht schmal.
//dies ist die wichtigste Zeile für das
Dies ist die wichtigste Linie für bottam Seite
android:uiOptions="splitActionBarWhenNarrow"