なんちゃって和訳。内容未検証
- コピペのメニューに独自のアクションを追加できるようになった
- contextual action modeを使う場合と同じ感じで実装できる。
新しいテキスト選択ツールバーを使うには、既存実装を次の通りに直します。(訳注:多分、すでにActionModeを自前で弄っている場合の話)
- ViewやActivityの、
startActionMode(Callback)
をstartActionMode(Callback, ActionMode.TYPE_FLOATING)
に変える -
ActionMode.Callback
をActionMode.Callback2
に -
onGetContentRect()
をオーバーライドして、viewの座標Rect
オブジェクトを設定する?
(Override the onGetContentRect() method to provide the coordinates of the content Rect object (such as a text selection rectangle) in the view.) - 選択状態じゃなかったら
invalidateContentRect()
を呼ぶ?
(If the rectangle positioning is no longer valid, and this is the only element to be invalidated, call the invalidateContentRect() method.)
サポートライブラリのrev22.2を使っている場合、新しいツールバーは下位互換性がないので注意してください。デフォルトでは、appcompat
がActionMode
オブジェクトのコントロールをします。新しいツールバーは表示されません。
AppCompatActivity
でActionMode
サポートを有効にするには、getDelegate()
の戻り値のAppCompatDelegate
のsetHandleNativeActionModesEnabled()
にfalse
を設定します。
これによりActionMode
オブジェクトのコントロールがフレームワークに返されます。
これにより、Android 6.0(APIレベル23)の端末では、フレームワークがActionBar
または新しいツールバーを許可し、Android 5.1(APIレベル22)以下の端末ではActionBar
のみがサポートされます。
その他にPROCESS_TEXTというACTIONが増えた。マッシュルームみたいにテキストの処理を外部アプリ投げる仕組みっぽい。
Android Developers Blogでは選択したテキストをGoogle翻訳アプリに翻訳させるのを例に挙げている。
これは既にAndroid 6.0ユーザーなら使える。EditTextがあるアプリで適等に文章を入力して選択すると、選択ツールバーのオーバーフローメニューに「翻訳」と出る。
- In-app translations in Android Marshmallow | Android Developers Blog
http://android-developers.blogspot.jp/2015/10/in-app-translations-in-android.html