После нескольких разных попыток следующий код работал хорошо (диалог с окном редактирования не так хорош, но он функционален).EditTextPreference должен быть настроен (файл ресурса с настройками также должен быть изменен).CustomTextPreference должно иметь три простых конструктора.
открытый класс CustomEditTextPreference extends EditTextPreference {...
@Override
protected void showDialog(Bundle state)
{
super.showDialog(state);
// solving problem with insufficient space for showing EditText in EditTextPreference's dialog. This problem exists only
// on HTC WildFire with android OS 2.2
if ( Build.MODEL.equals("HTC Wildfire") && 8 == Integer.valueOf(android.os.Build.VERSION.SDK) )
{
_makeMoreRoomForEditText();
}
}
private void _makeMoreRoomForEditText()
{
EditText editText = getEditText();
View parent1 = (View) editText.getParent();
View parent2 = (View) parent1.getParent();
View parent3 = (View) parent2.getParent();
View parent4 = (View) parent3.getParent();
View parent5 = (View) parent4.getParent();
editText.setPadding(editText.getPaddingLeft(), 0, editText.getPaddingRight(), 0);
parent1.setPadding(parent1.getPaddingLeft(), 0, parent1.getPaddingRight(), 0);
parent3.setPadding(parent1.getPaddingLeft(), 0, parent1.getPaddingRight(), 0);
parent5.setPadding(parent5.getPaddingLeft(), 0, parent5.getPaddingRight(), 0);
ViewGroup par5 = (ViewGroup) parent5;
View v = par5.getChildAt(0);
v.setPadding(v.getPaddingLeft(), 3, v.getPaddingRight(), 3);// empirically determined values - looks fine only on HTC WildFire device with 2.2 Android
}
}