Por fin, me entero de una solución para mi problema, así que quiero compartir para alguien tal vez obtener el mismo problema en el futuro. Una breve descripción de mi diseño de la siguiente manera:
<myRelativeLayout>
<topbar.../>
<myscrollView>
<linearLayout>
//all stuff controls:editview,textview,....
</linearLayout>
</myscrollView>
<bottombar.../>
i crear clases personalizadas myRelativeLayout extender RelativeLayout
public class myRelativeLayout extends RelativeLayout{
public interface OnRelativeLayoutChangeListener {
void onLayoutPushUp();
void onLayoutPushDown();
}
private OnRelativeLayoutChangeListener layoutChangeListener;
public myRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int proposedheight = MeasureSpec.getSize(heightMeasureSpec);
final int actualHeight = getHeight();
if (actualHeight > proposedheight){
// Keyboard is shown
layoutChangeListener.onLayoutPushUp();
} else if(actualHeight < proposedheight){
// Keyboard is hidden
layoutChangeListener.onLayoutPushDown();
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
public void setLayoutChangeListener(OnRelativeLayoutChangeListener layoutChangeListener) {
this.layoutChangeListener = layoutChangeListener;
}
public OnRelativeLayoutChangeListener getLayoutChangeListener() {
return layoutChangeListener;
}
}
Y en mi actividad, que acaba de establecer setLayoutChangeListener para myRelativeLayout para ocultar bottombar cuando el teclado aparece y muestra bottombar cuando el teclado se esconde:
myRlayout.setLayoutChangeListener(new OnRelativeLayoutChangeListener() {
@Override
public void onLayoutPushUp() {
// TODO Auto-generated method stub
myBottombar.setVisibility(View.GONE);//in my case i need to setVisibility(View.GONE) to bottombar in order for this bar is not displayed when softkeyboard show up.
}
@Override
public void onLayoutPushDown() {
// TODO Auto-generated method stub
myBottombar.setVisibility(View.VISIBLE);// redisplay myBottombar when keyboard is closed.
}
});
Dont forget set android: windowSoftInputMode = "adjustResize" para la actividad. Espero que esto sea útil para alguien que tenga el mismo problema.
Tengo el mismo problema, pero no me gusta hacer la codificación que hizo para "falsificarlo" ... hmm – Ted
hasta ahora esta solución ha funcionado bien, también busqué una alternativa que sea más simple. Espero que alguien más comparta una mejor solución para este problema. – MichaelP
Pero esta solución oculta los botones, cuando se muestra el teclado virtual. Pero dependiendo de la resolución de la pantalla, etc., es posible que el botón no deba ocultarse, ¿no? – Ted