我有一个应用程序,已从android 1.5到4.0工作。Android4.1导致了一个简单的EditTextPreference问题。应用程序始终处于横向模式。当我调出团队名称时,它看起来是这样的。
Pic 1 http://myweb.midco.net/hgs/s1.jpg
然后,当我单击“编辑文本字段”时,它始终是这样的。
Pic 1 http://myweb.midco.net/hgs/s2.jpg
但在我的模拟器中,以及对搭载安卓4.1的三星Galaxy Tab2的投诉中,我得到了这样的结果。
Pic 1 http://myweb.midco.net/hgs/s3.jpg
这将压缩文本字段。将清单更改为
android:windowSoftInputMode="stateVisible|adjustResize"或
android:windowSoftInputMode="stateVisible|adjustPan"也没帮上忙。将标题留空会将标题去掉,但您仍然看不到编辑文本。这是这个Pref的代码。
EditTextPreference teamnamePref = new EditTextPreference(this);
teamnamePref.setTitle("Team Name");
teamnamePref.setKey( "t" + Team_ID );
teamnamePref.setSummary(TheTeamName);
teamnamePref.setDialogTitle("Enter Name For Team " + Team_ID);
teamnamePref.setDefaultValue(TheTeamName);
teamnamePref.getEditText().setSingleLine(true);
TeamCategory.addPreference(teamnamePref); 谢谢
发布于 2013-05-05 11:37:12
我创建了一个方法来解决这个错误(在三星Galaxy S3,宏碁A501和HTC Desire X上进行了测试):
// This method provides a work-around for a bug with EditTextPreference and the Samsung soft keyboard.
// When in landscape mode, the Samsung keyboard can obscure the text box, as it does not use fullscreen
// / extract mode like other keyboards do in this case. So we manually show an alert dialog with an
// EditText control, and update the preference value manually.
//
// Usage:
// Create a normal <Preference> in your XML file, then in your corresponding fragment, retrieve the
// preference object using its key and pass it to this method. E.g.
//
// EditTextPreferenceHelper.CreateEditTextPreferenceDialog(
// getActivity(),
// findPreference("yourPrefKey"));
public static void CreateEditTextPreferenceDialog(final Context context, Preference preference) {
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(final Preference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(preference.getTitle());
final EditText textBox = new EditText(context);
textBox.setImeOptions(EditorInfo.IME_ACTION_DONE);
textBox.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT);
textBox.setText(PreferenceManager.getDefaultSharedPreferences(context).getString(preference.getKey(), ""));
builder.setView(textBox);
builder.setPositiveButton("OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
PreferenceManager.getDefaultSharedPreferences(
context).edit().putString(preference.getKey(),
textBox.getText().toString()).commit();
dialog.dismiss();
}
});
builder.setNegativeButton("Cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
return false;
}
});
}发布于 2013-05-05 13:21:06
像这样的东西应该可以完成这项工作。您可以随时将软输入标志修改为其他值,如adjustPan。这之前对你不起作用的原因是EditTextPreference覆盖了这些选项。
import android.content.Context;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.view.Window;
import android.view.WindowManager;
public class CustomEditTextPref extends EditTextPreference
{
public CustomEditTextPref(Context context)
{
super(context);
}
@Override
protected void showDialog(Bundle state)
{
super.showDialog(state);
Window window = getDialog().getWindow();
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}https://stackoverflow.com/questions/12203490
复制相似问题