Две панели действий (снизу и вверх) одновременно?
Мне нужно сделать две панели действий, я, кстати, использую actionBarSherlock. Итак, что мне нужно, это поставить переключатель «Экран приветствия» на обычную панель действий вверх и добавить две обычные опции ActionBar Action. Подобно тому, что мне нужно, Gmail и Карты, как здесь:http://cdn.androidcommunity.com/wp-content/uploads/2012/03/Screenshot_2012-03-28-12-58-16.png (Они не позволили мне опубликовать изображение из-за низкой репутации, смотрите ссылку, пожалуйста)
Это приложение Карт имеет верхнюю и нижнюю панель действий, именно то, что мне нужно, потому что, как только я достигаю точки, где я могу добавить вторую панель действий, я знаю, с чего начать ...
Я искал около недели об этой теме, и я нашел несколько похожих вопросов, но я не понял ни одного ответа; ответы были о пользовательском представлении, с которым я (вообще) не знаком и не могу ничего понять, но да, я попытался создать «пользовательское представление» из всего, что я считаю правильным, и я получил crrassshheesss, который я не сделал не можете найти решение для ... Если вы можете, пожалуйста, покажите мне в качестве примера это приложение Карт, как оно использует эти две панели действий? (Я не хочу перемещаться, как на картах и в Gmail, а только на двух панелях действий)
Вот часть моего кода:
//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);
}
Мой Манифест:
<?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>
И мои меню, которые я намереваюсь поместить в свои экшн-бары ...
Меню \ 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 (Должен был назвать его upper_actionbar, но это просто ошибка мышления, это имя, в конце концов,: / plz continue)
<?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>
Если вам нужно больше информации, пожалуйста, скажите мне, я скажу, это для меня и всех остальных, в конце концов!
РЕДАКТИРОВАТЬ !!! : Я нашел очень близкий пример к моему вопросу, настройки Wi-Fi (http://omgdroid.com/wp-content/uploads/2012/07/Screenshot_2012-07-06-01-34-29-576x1024.png) Он использует переключатель в обычной панели действий и обычную панель действий вниз! Именно то, что мне нужно!
РЕДАКТИРОВАТЬ 2 !!!! Вот скриншот моего Galaxy Nexus с использованием пользовательского ПЗУ, основанного на aosp. Это именно то, что мне нужно и что я имею в виду:
Настройки Wi-Fi-:https://lh4.googleusercontent.com/-aeL_sHjIcQQ/UPVptGQiuqI/AAAAAAAAAGE/UGc-CuLP4Qw/s512/Screenshot_2013-01-15-16-36-32.png
Настройки-Bluetooth: lh3 * googleusercontent.com / -4j6ca1Nm1VI / UPVqAiDn_PI / AAAAAAAAAGM / LLB2ILWVjQY / s512 / Screenshot_2013-01-15-16-38-14.png
РЕДАКТИРОВАТЬ 3 !!! Большой прогресс в моем расследовании по Bluetooth и Wi-Fi, и, как я уже сказал и спросил, они были настоящими боевиками! посмотрим, что я получил в настройках-Bluetooth:
BluetoothSettings.class / 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);
}
Это могут быть параметры, четко показанные в splitActionBarDown с точными свойствами вверх ...
в настоящее время :
BluetoothSettings.class / 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);
}
Отметив, что этот класс не расширяет Activity, онextends DeviceListPreferenceFragment
...
Теперь, когда мы знаемэто возможно чтобы иметь две панели действий (split и normal) одновременно, нам нужен способ упростить это, может быть, с помощью класса или библиотеки ??