11

現在、Samsung GalaxyTab2をデバイスとして使用してアプリを開発しています。

XMLの私のコードは次のとおりです。

<EditText
    android:id="@+id/analysis_text"
    style="@style/icon_text"
    android:imeOptions="actionDone"
    android:inputType="textMultiLine"
    android:onClick="onBtnClicked"
/>

このコードを実行すると、特定の状況でのみ全画面データ入力モード(抽出モード)が自動的にトリガーされます。

画面やコントロールの位置に関係なく、このコントロールのテキストを編集しているときに、ユーザーに完全なデータ入力画面を表示してもらいたいです。

この質問の別の言い換え:コンテンツが何であるかに関係なく、アクティビティでEditTextボックスの全画面データ入力モードを強制するにはどうすればよいですか?

4

2 に答える 2

8

私はこの問題を解決しましたが、実際には解決していませんが、有効な回避策を見つけました。

回避策は、テキストエディタ(フルスクリーンUIに似ています)を設計し、それらの各EditBoxesをクリックすると、新しいUIアクティビティがトリガーされます(startActivityForResult()完了すると、制御が呼び出し元のアクティビティに戻されます)編集が完了すると、テキストはメイン画面に戻されます。

また、コントロールを転送するボックスがフォーカスされないようにして、コントロールを新しいUIにすぐに転送するようにしました。

このようにして、キャンセルボタンを実装することができました。これにより、ユーザーは誤って行った変更を保存せずに実際に戻ることができます。

私は新しいアイデアを受け入れていますが、これは私にとってはうまくいきました。

のコードActivity

public void onBtnClicked(View v) {
    EditText current_text_box = (EditText) v;

    Intent intent = new Intent(ObservationActivity.this,
            TexteditorActivity.class);
    intent.putExtra("start_text", current_text_box.getText().toString());
    intent.putExtra("start_position", current_text_box.getSelectionStart());
    startActivityForResult(intent, v.getId());
} 

XMLのコード:

<EditText
    android:id="@+id/observation_text"
    style="@style/icon_text"
    android:focusable="false"
    android:imeOptions="flagNoExtractUi"
    android:inputType="textMultiLine"
    android:onClick="onBtnClicked" >
</EditText>

私がコードを使用したフルスクリーンUIを作成するには、次のようなものを使用できます(http://android-richtexteditor.googlecode.com/

于 2013-01-15T08:57:37.240 に答える
0

あなたはこれを試すことができます

yourEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus){
                yourEditText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
            }
        }
    });

親レイアウトのLayoutParamsをインポートします。あなたの答えもうまくいくでしょう。

于 2018-01-08T06:17:25.447 に答える