[解決済み] AppCompat-v7によるツールバーとコンテクストアクションバー
質問
ロリポップで新しく追加されたツールバーとAppCompat-v7ライブラリを使用する作業を行っています。私は以下のようにしました。 このガイド Toolbar を設定する際に、コンテキスト・アクション・バー(コピー/ペーストのためのテキストのハイライトなど)を表示させる何かを呼び出すと、ページ上で Toolbar が押し下げられることに気づきました。ページ下部の画像で、私が言っていることを確認することができます。
そこで、基本的には、このように設定します。ツールバーをxmlファイルに定義して、includeタグで使用しています。
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"/>
そして、それをビューでインスタンス化します。
<LinearLayout
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"
android:orientation="vertical"
android:id="@+id/root"
tools:context=".MainActivity">
<include
layout="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- Rest of view -->
</LinearLayout>
コードでは、このように設定しています。
// On Create method of activity:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Contextual ActionBarがToolbarの上に来るようにする方法をご存知の方はいらっしゃいますか?
解決方法は?
アップデートしてください。
解決策: windowActionModeOverlay プロパティを使用します。テーマで設定してください。
<item name="windowActionModeOverlay">true</item>
をクリックすると、アクションモードはアクションバーを押し下げるのではなく、その上に表示されます。(最新のAppCompatを使用していない場合は、プロパティに "android:" という接頭辞を追加する必要があります)。これは基本的に、画面の上部にツールバーがあることを AppCompat に知らせ、ActionMode をその上に描画するようにします。
古い答え/回避策
私も同じ問題にぶつかりました。どんなテーマを設定しても、ActionBarとして設定したToolbarを押し下げてしまいます。サポートライブラリの有無も試しましたが、問題ありませんでした。
残念ながら、私はそれを修正することができませんでしたので、私は代わりに回避策を構築しました。私の
ActionModeCallback
's
onCreateActionMode
アクションバーを非表示にしています。
actionBarToolbar.setVisibility(View.GONE);
であり
onDestroyActionMode
もう一度表示します。
actionBarToolbar.setVisibility(View.VISIBLE);
非表示/表示は非常に迅速に行われるため、私のテストデバイスでは目立ちません。もちろん、欠点もあります。入力アニメーションはまだ機能しますが、コンテキスト・アクション・バーの終了アニメーションは、ツールバーがすぐにその上にポップアップするため、失われます。しかし、より良い解決策を見つけるまで、私たちはこれで立ち往生していると思います。
(私のアクティビティは、実際にはカスタム
BaseActivity
というメソッドを持つ
getActionBarToolbar()
からの引用です。
Google I/O 2014アプリのソースコード
そのため、Toolbarを簡単に取得することができます。
BaseActivity activity = (BaseActivity) getActivity();
activity.getActionBarToolbar().setVisibility(View.GONE);
I/Oアプリはコンテクストアクションバーが使えないのが残念です(笑)
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
android.os の NetworkOnMainThreadException。
-
Androidで発生した問題、解決策とヒント
-
アンドロイドプロジェクトのパッケージングにgradleを使用する際の問題点
-
を作ってください。*** makeするルールがない エラーの原因、分析、解決策
-
ArrayAdapter は、リソース ID が TextView であることが必要です。
-
JVMのエラーに遭遇しました。Java Runtime Environmentによって致命的なエラーが検出されました。
-
Windowsのadbシェルでデータディレクトリにアクセスするとパーミッションが拒否される
-
ConstraintLayoutのいくつかのプロパティの概要(RelativeLayoutの強化版、LinearLayoutの比例プロパティを含む、階層ツールの削減)。
-
Androidの美しいSeekBarスタイルのカスタマイズ
-
Android studio 制約レイアウト ConstraintLayout