2014-02-26 2 views
3

키보드 팝업 아래 나의 main.xml에변경 마진이 코드를 가지고

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/textView1" 
     android:layout_alignParentLeft="true" 
     android:layout_marginBottom="80dp" 
     android:paddingTop="10dp" 
     android:text="@string/parameter" 
     android:textColor="@color/White" 
     android:textSize="18sp" /> 

    <Spinner 
     android:id="@+id/spinner1" 
     style="@layout/spinner_layout" 
     android:layout_width="120dp" 
     android:layout_height="55dp" 
     android:layout_alignLeft="@+id/spinner3" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="5dp" 
     android:layout_marginTop="22dp" 
     android:paddingLeft="5dp" 
     tools:listitem="@android:layout/simple_list_item_1" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/spinner1" 
     android:layout_alignBottom="@+id/spinner1" 
     android:layout_alignLeft="@+id/output2" 
     android:layout_alignParentRight="true" 
     android:ems="10" 
     android:inputType="numberDecimal" > 

     <requestFocus /> 
    </EditText> 

    <Spinner 
     android:id="@+id/spinner3" 
     android:layout_width="120dp" 
     android:layout_height="55dp" 
     android:layout_alignParentBottom="true" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="320dp" 
     android:layout_toRightOf="@+id/textView7" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/textView7" 
     android:layout_alignParentLeft="true" 
     android:layout_marginBottom="80dp" 
     android:text="@string/transmission" 
     android:textColor="@color/White" 
     android:textSize="18sp" /> 

    <EditText 
     android:id="@+id/editText2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView1" 
     android:layout_alignBottom="@+id/textView1" 
     android:layout_alignLeft="@+id/EditText1" 
     android:layout_alignRight="@+id/EditText1" 
     android:ems="10" 
     android:inputType="numberDecimal" 
     android:text="70" /> 

    <EditText 
     android:id="@+id/EditText1" 
     android:layout_width="120dp" 
     android:layout_height="55dp" 
     android:layout_above="@id/editText2" 
     android:layout_alignParentRight="true" 
     android:layout_marginBottom="50dp" 
     android:ems="10" 
     android:hint="@string/uren" 
     android:inputType="number|numberDecimal" /> 

    <TextView 
     android:id="@+id/textView7" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignTop="@+id/spinner3" 
     android:text="@string/out" 
     android:textColor="@color/White" 
     android:textSize="18sp" /> 

    <TextView 
     android:id="@+id/output2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView7" 
     android:layout_alignBottom="@+id/textView7" 
     android:layout_alignLeft="@+id/EditText1" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/box" 
     android:paddingTop="10dp" 
     android:text="@string/textview" 
     android:textSize="18sp" /> 

    <Spinner 
     android:id="@+id/spinner2" 
     style="@layout/spinner_layout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/textView1" 
     android:layout_marginBottom="80dp" 
     android:layout_marginLeft="20dp" 
     android:layout_toLeftOf="@+id/EditText1" 
     android:layout_toRightOf="@id/textView2" /> 

    <TextView 
     android:id="@+id/textView6" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignTop="@+id/editText1" 
     android:text="@string/in" 
     android:textColor="@color/White" 
     android:textSize="18sp" /> 

</RelativeLayout> 

This is the code above This happens when keyboard comes up

키보드를 제거하거나 여백을 감소, 팝업 때 내가 원하는 것은,이다 키보드의 절반이 키보드에서 사라 졌으므로 키보드가 사라지면 모든 것이 정상으로 돌아 오기를 바란다.

2 시간 동안 고생하고 있으므로 n은 화면 상단에 표시됩니다. 내가 시도한 모든 것을 게시하려고하지 마십시오 ... 매니페스트에 android:windowSoftInputMode="adjustResize"이 있습니다.

지금 일어나는 일 : 키보드가 올라 오면 나머지도 올려 놓습니다 (하단 절반은 상단 절반, 상단 절반은 화면 바깥 쪽입니다). 그러나 마진을 줄이기 위해 모든 것이 상반부에 머물러 있습니다. 이것이 가능한가?

그리고이 문제를 해결할 수 있도록 도와 주시겠습니까?

답변

0

소프트 키보드를 탐지하려면이 사용자 지정 상대 레이아웃을 사용하십시오. 키 보드 조정 레이아웃 매개 변수 (여백)를 기반으로합니다.

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

    } 
0

This는 키보드 팝업의 이벤트를 얻을 수있는 코드입니다.

이 경우 프로그래밍 방식으로 여백을 변경하거나 키보드가 팝업 될 때 대체 레이아웃을 설정할 수 있습니다 (이 경우 쉽게 할 수 있음). 레이아웃을 변경하면 이미 입력 된 값이 손실됩니다. 그러나 로컬 변수에 저장할 수도 있고 레이아웃을 변경할 때 레이아웃 변경시 해당 값을 사용하여 이전 레이아웃에서 입력 한 값을 미리 설정할 수 있습니다.

귀하의 회 전자 및 편집 텍스트가 작동하도록하려면 onConfigurationChangedonCreate 번으로 다시 전화해야 할 수도 있습니다.

추신 : 이것은 단지 아이디어 일 뿐이며,이를 구현하는 다른 방법이있을 수도 있지만 시도해 볼 수도 있습니다.