11

我目前正在开发一个使用三星 Galaxy Tab 2 作为我的设备的应用程序。

我在 XML 中的代码是:

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

执行此代码时,仅在某些情况下才会自动触发全屏数据输入模式(提取模式)。

我希望我的用户在编辑此控件中的文本时获得完整的数据输入屏幕,无论控件的屏幕或位置如何。

这个问题的另一种说法:无论内容是什么,如何在我的活动中强制编辑文本框的全屏数据输入模式?

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 回答