我目前正在使用三星Galaxy Tab 2作为我的设备开发应用程序。
XML中的我的代码是:
<EditText
android:id="@+id/analysis_text"
style="@style/icon_text"
android:imeOptions="actionDone"
android:inputType="textMultiLine"
android:onClick="onBtnClicked"
/>
执行此代码时,仅在某些情况下会自动触发全屏数据输入模式(提取模式)。
我希望我的用户在编辑此控件中的文本时获得完整的数据输入屏幕,无论屏幕或控件的位置如何。
这个问题的另一个改述: 无论内容是什么,如何在我的活动中强制使用EditText框的全屏数据输入模式?
答案 0 :(得分:7)
我解决了这个问题,并未真正解决,但找到了有效的解决方法。
解决方法是我设计了一个文本编辑器(看起来类似于全屏用户界面),然后点击每个EditBox
es触发新的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/)
答案 1 :(得分: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。你的答案也会很好。