Я хочу прокрутить мой макет, когда клавиатура softinput видна. Я определил scrollview в своем xml в нужном месте, но когда клавиатура видна, она скрывает часть макета, например кнопок. Я прочитал на stackoveflow Link, что scrollview не работает, когда активность FULL_SCREEN. Если это правда, то как я могу прокручивать свой макет, когда отображается softinput.как прокручивать макет, когда клавиатура видна в действии с помощью FULL_SCREEN
ответ
Используйте этот обычай относительное расположение, чтобы обнаружить softkeyboard с в Уре XML
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
/**
* RelativeLayout that can detect when the soft keyboard is shown and hidden.
*
*/
public class RelativeLayoutThatDetectsSoftKeyboard extends RelativeLayout {
public RelativeLayoutThatDetectsSoftKeyboard(Context context, AttributeSet attrs) {
super(context, attrs);
}
public interface Listener {
public void onSoftKeyboardShown(boolean isShowing);
}
private Listener listener;
public void setListener(Listener listener) {
this.listener = listener;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = MeasureSpec.getSize(heightMeasureSpec);
Activity activity = (Activity)getContext();
Rect rect = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect.top;
int screenHeight = activity.getWindowManager().getDefaultDisplay().getHeight();
int diff = (screenHeight - statusBarHeight) - height;
if (listener != null) {
listener.onSoftKeyboardShown(diff>128); // assume all soft keyboards are at least 128 pixels high
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
Затем реализует RelativeLayoutThatDetectsSoftKeyboard.Listener к классу Actiity
RelativeLayoutThatDetectsSoftKeyboard mainLayout = (RelativeLayoutThatDetectsSoftKeyboard)V.findViewById(R.id.dealerSearchView);
mainLayout.setListener(this);
@Override
public void onSoftKeyboardShown(boolean isShowing) {
if(isShowing) {
} else {
}
}
Основываясь на клавиатуре видимость перемещает ваш макет вверх и вниз с использованием параметров макета
вы должны изменить файл манифеста
в вашей деятельности тег
андроида: windowSoftInputMode = "adjustPan" добавить это.
увидеть это http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft
У меня уже есть define android: windowSoftInputMode = "stateVisible | adjustResize | adjustPan", но все еще не работает –
показать нам код плз –
Возможно, это поможет http://stackoverflow.com/questions/11298479/can-not-get-scrollview-to-scroll-when-soft-keyboard-is-shown сделать свой прокрутку в виде родителя –