EditText
伝統的なモンゴル語の縦型を作っています。EditText
回転した の内部にわずかに変更された を埋め込むことで、正常に実装できましたViewGroup
。システム 1 は縦書きテキストをサポートしておらず、回転しても回転しないため、完全にカスタムのコンテキスト メニューを作成する必要がありますViewGroup
。そのため、システム コンテキスト メニューを完全に無効にしたいと考えています。
これは、コピー/貼り付けなどを無効にしようとしているこれらの質問とは異なることに注意してください。
- EditText との間のコピー/貼り付けを無効にする方法
- EditText: Text Selection Handler クリック イベントで Paste/Replace メニュー ポップアップを無効にする
- Android EditTextで貼り付けオプションを無効にする方法
- Android: Edittext でコピー アンド ペースト機能を完全に無効にする方法
シミュレーターにはコンテキスト メニューが表示されませんが、Android 5.0.2 Xiaomi フォンには表示されます。
私が試してみました:
私はハッキングに対してオープンですが、デバイス間で一貫して動作する必要があります. Mark Murphy (Commons Guy)は、似たようなことをしようとしている別のユーザーへの返信として、次のように書いています。
答えを思いついたとしても、デバイスを超えて機能しないのではないかと思います。デバイス メーカーは、EditText 用に独自の「コンテキスト メニュー」を展開する傾向があり、そのコンテキスト メニューに項目を追加しようとする開発者の試みを無効にしています。そのコンテキスト メニューをブロックしようとすると、同様の結果になると思います。
私は運が悪いのでしょうか?
今考えられる唯一のことは、完全に書き直しTextView
てEditText
ゼロから作成することです (まあ、Android ソースを変更することによって)。私は似たようなことをした人を知っていますが、彼のコードはオープンソースではありません。この大きな一歩を踏み出す前に、Stack Overflow でもっと簡単な解決策を探してみたいと思います。
更新:過去 2 日間、ソース コードを変更しようとしてきましたがTextView
、6 か月のプロジェクトのようです。相互に関連するクラスの塊です。別の解決策が必要ですが、アイデアがありません。
MVCE
これは、問題を再現するために私が考えることができる最も簡単な方法です。私の習慣から必要なものは何もありませんEditText
。レイアウトはEditText
、デフォルト プロジェクトの Hello World のTextView
. 非推奨のメソッドを処理しないように、最小 API を 11 に変更しました。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = (EditText) findViewById(R.id.edit_text);
editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { return false; }
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) { return false; }
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) { return false; }
@Override
public void onDestroyActionMode(ActionMode actionMode) { }
});
}
}
シミュレーター (API 24 を実行) のコンテキスト メニューは、カーソル ハンドルをクリックすると表示されます (ロング クリックまたはダブル クリックでは表示されません)。ここに画像があります:
Android 5.0 を実行している Xiaomi MIUI 電話では、すべての状況 (カーソル ハンドルのクリック、長押し、ダブルクリック) でコンテキスト メニューが表示されます。
アップデート
Aritra Roy のソリューションは、シミュレーター、彼がテストした他のデバイス、および私のデバイスで動作しています。元の問題が解決されるため、彼の回答を受け入れました。唯一のマイナス面は、テキスト選択も無効になることです。