2013-05-15 2 views
4

Я хочу прокрутить мой макет, когда клавиатура softinput видна. Я определил scrollview в своем xml в нужном месте, но когда клавиатура видна, она скрывает часть макета, например кнопок. Я прочитал на stackoveflow Link, что scrollview не работает, когда активность FULL_SCREEN. Если это правда, то как я могу прокручивать свой макет, когда отображается softinput.как прокручивать макет, когда клавиатура видна в действии с помощью FULL_SCREEN

+0

показать нам код плз –

+0

+0

Возможно, это поможет http://stackoverflow.com/questions/11298479/can-not-get-scrollview-to-scroll-when-soft-keyboard-is-shown сделать свой прокрутку в виде родителя –

ответ

1

Используйте этот обычай относительное расположение, чтобы обнаружить 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 { 

    } 
} 

Основываясь на клавиатуре видимость перемещает ваш макет вверх и вниз с использованием параметров макета

0

вы должны изменить файл манифеста

в вашей деятельности тег

андроида: windowSoftInputMode = "adjustPan" добавить это.

увидеть это http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

+0

У меня уже есть define android: windowSoftInputMode = "stateVisible | adjustResize | adjustPan", но все еще не работает –