-1

First, I have multiple EditTexts in a Framelayout which wrapped by a ScollView.

I already use below code to let ScrollView scroll up when keyboard is shown -

((Activity) getContext()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

Also, I tried ADJUST_PAN in above code and nothing changed.

Here is the problem - when I typing in one of those EditTexts, the ScrollView scrolled up automatically which lead to my current editing EditText invisible.

I'm wondering why did this happened? Is my current editing EditText lost focus when typing on the keyboard? And how do I fix it?

By the way I didn't using any xml for the layout. All layouts are written in Java.

The main layout is -

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);
    }
}

And the EditView is -

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);
}
}
Bob
  • 34
  • 5

1 Answers1

1

Add this code inside your <activity> in AndroidManifest.xml

android:windowSoftInputMode="adjustResize|stateHidden"
Mr Lister
  • 45,515
  • 15
  • 108
  • 150
Jenisha Makadiya
  • 832
  • 5
  • 17
  • Not working...I've already tried adjustResize and adjustPan. The edit view is visible when keyboard show up, but when typing on keyboard, the scrollview will scroll up and covered my edit view. Thanks for the answer anyway. – Bob Nov 26 '15 at 08:23
  • 1
    Try using xml file for design. I never tried scrollview using java – Jenisha Makadiya Nov 30 '15 at 07:21