Во-первых, у меня есть несколько EditTexts в Framelayout, который завернут ScollView.ScrollView прокручивается при вводе
Я уже использую ниже код, чтобы ScrollView прокрутки вверх, когда клавиатура отображается -
((Activity) getContext()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Кроме того, я попытался ADJUST_PAN в коде выше и ничего не изменилось.
В этом случае - когда I печатает в одном из этих EditTexts, ScrollView автоматически прокручивается, что приводит к моему текущему редактированию EditText невидимым.
Мне интересно, почему это произошло? Мое текущее редактирование EditText потеряло фокус при наборе текста на клавиатуре? И как мне это исправить?
Кстати, я не использовал xml для макета. Все макеты написаны на Java.
Основная раскладка -
public class PoorEditScroll extends ScrollView {
PoorEdit poorEdit;
public PoorEditScroll(Context context) {
super(context);
initUI();
}
public PoorEditScroll(Context context, AttributeSet attrs) {
super(context, attrs);
initUI();
}
private void initUI(){
setScrollContainer(false);
poorEdit = new PoorEdit(getContext());
this.addView(poorEdit);
}
this.addView(poorEdit);
}
public void toJson(String s) {
poorEdit.toJson(s);
}
public void loadJson(String s) {
poorEdit.loadJson(s);
}
class PoorEdit extends LinearLayout {
private EditView editView;
public PoorEdit(Context context) {
super(context);
initUI();
}
public PoorEdit(Context context, AttributeSet attrs) {
super(context, attrs);
initUI();
}
private void initUI(){
this.setOrientation(VERTICAL);
LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
this.setLayoutParams(layoutParams);
DisplayMetrics dm = getContext().getResources().getSystem().getDisplayMetrics();
this.setMinimumHeight(dm.heightPixels);
// TODO: 15/11/25 Override OnMeasure in EditView
editView = new EditView(getContext());
this.addView(editView);
((Activity) getContext()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
public void loadJson(String folderPath){
editView.loadJson(folderPath);
}
public String toJson(String dest){
return editView.toJson(dest);
}
}
И EditView
это -
public class EditView extends FrameLayout implements View.OnDragListener {
public static BaseContainer poorBoy;
private BaseContainer lastAdd = null;
public EditView(Context context) {
super(context);
initUI();
}
public EditView(Context context, AttributeSet attrs) {
super(context, attrs);
initUI();
}
private void initUI(){
this.setOnDragListener(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 1);
this.setLayoutParams(layoutParams);
//Call addView to add a EditText in this function.
addTextOn(0, 0, Constants.eleWidth, Constants.eleHeight);
}
}
Не работает ... Я Вы уже пытались настроитьResize и adjustPan. Вид редактирования отображается, когда отображается клавиатура, но при наборе текста на клавиатуре прокрутка просматривается и охватывает мое редактируемое представление. Спасибо за ответ в любом случае. – Bob
вставьте свой XML-код, поэтому я могу проверить его. –
Пожалуйста, проверьте мой отредактированный вопрос. Благодарю. – Bob