コンテキストアクションバーには奇妙な動作があります。コンテキストメニューバーの奇妙な動作
まず:
1つのメニュー項目は、私だけがオーバーフローボタンをクリックして毎秒の時間を示している:
第二/第三:
は、そのアイコン方法はありますあまりにも多くのスペースを使用しないでください?私はすべての項目にプロパティandroid:showAsAction="always"
を追加変更
は、すべてのアイコンを表示するために、実際に十分なスペースがある - けどを私の共有アイコンはもうクリックできない:
クリーンプロジェクトはしていません助けて。
私のテストデバイス(Galaxy S3)でAndroid 4.2.2を使用しています。
は私も(また、一番下にnavigationbarを取り出し、 SlimBean前に、今 CyanogenMod 10.1)完全に私 XXX GS3に新しいROMをフラッシュしようとした - 助けにはなりませんでした。Nexus 4でも試しました。スペースが増えるので、共有ボタンと削除ボタンが表示されます。共有ボタンは、アクションモードを開始するとのクリック可能ではありませんが、デバイスを横長モードにすると機能し、ポートレートに戻すと機能します。 Nexus 4では基本的に共有ボタンが回転する前に機能しません。
マニフェスト:minSdkVersion=17
に対してコンパイル
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />
には違いはありません。
私はこのようなフラグメントからのアクション・モードを開始します。私はメニューを移入ActionMode.Callback
で
mActionMode = activity.startActionMode(mMultipleCallback);
:
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.management_cab, menu);
MenuItem item = menu.findItem(R.id.managementCABShare);
mShareActionProvider = (ShareActionProvider) item.getActionProvider();
//...other stuff
return true;
}
そして、ここではXMLです:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:title="@string/checkAll"
android:id="@+id/managementCABCheckAll"
android:icon="@android:drawable/checkbox_on_background">
</item>
<item
android:title="@string/enable"
android:id="@+id/managementCABEnable"
android:icon="@drawable/sphere_green">
</item>
<item
android:title="@string/disable"
android:id="@+id/managementCABDisable"
android:icon="@drawable/sphere_red">
</item>
<item
android:title="@string/delete"
android:id="@+id/managementCABDelete"
android:icon="@android:drawable/ic_menu_close_clear_cancel">
</item>
<item
android:title="@string/share"
android:id="@+id/managementCABShare"
android:actionProviderClass="android.widget.ShareActionProvider"
android:icon="@android:drawable/ic_menu_share">
</item>
<item
android:title="@string/export"
android:id="@+id/managementCABExport"
android:icon="@drawable/explorer">
</item>
</menu>
完全を期すために、callback
:
protected ActionMode.Callback mMultipleCallback = new ActionMode.Callback() {
private ShareActionProvider mShareActionProvider;
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.management_cab, menu);
MenuItem item = menu.findItem(R.id.managementCABShare);
mShareActionProvider = (ShareActionProvider) item.getActionProvider();
hideUnwantedCABItems(menu);
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
List<Integer> checkedPositions = getAllCheckedPositions();
switch (item.getItemId()) {
case R.id.managementCABCheckAll:
changeCheckedOfAllItems(true);
return true;
case R.id.managementCABEnable:
changeEnabled(checkedPositions, true);
return true;
case R.id.managementCABDisable:
changeEnabled(checkedPositions, false);
return true;
case R.id.managementCABDelete:
if (deleteAlert == null)
createDeleteDialog(checkedPositions);
initDeleteDialog(checkedPositions);
return true;
case R.id.managementCABShare:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, exportItemsAndGetUris(checkedPositions));
shareIntent.setType("application/xml");
setShareIntent(shareIntent);
return true;
case R.id.managementCABExport:
String message;
if (StorageController.copyUriListToExportFolder(exportItemsAndGetUris(checkedPositions)))
message = getActivity().getString(R.string.export_success);
else
message = getActivity().getString(R.string.export_fail);
Toast.makeText(getActivity(), message + ":\n" + StorageController.getExternalExportApplicationFolder(), Toast.LENGTH_LONG).show();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
changeCheckedOfAllItems(false);
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
private void setShareIntent(Intent shareIntent) {
if (mShareActionProvider != null) {
mShareActionProvider.setShareIntent(shareIntent);
}
}
};
デバイスでv14を使用しているか、v14 SDKに対してコンパイルしていますか? –
なぜ下の投票??とにかく私のデバイスで4.2.2を使用しています - 明確化のために編集を確認してください –
これは私ではありませんでした。あなたがv14に対してコンパイルすれば、私は最初に最新のSDKをコンパイルしようとします。 –