안드로이드 해결 소프트 키보드 가리기 Button

10162 단어
오늘은 소프트 키보드가 로그인 Button을 가리는 방법을 소개합니다. 로그인과 등록을 할 때 인터페이스 맨 아래에 Button이 있을 수 있습니다. 그러나 사용자가 입력란에 입력할 때 소프트 키보드는 일부 입력란과 Button을 가리기 쉽습니다. 인터넷에서 관련 자료를 찾아보면 해결하는 방법은 여러 가지가 있습니다.하지만 모두 뜻대로 되지 않는 부분(내가 알아낸 관련 해결 방안만)이 있다. 마지막으로 내가 생각하기에 괜찮은 방안을 하나 정리해 여러분께 공유한다.직접 코드에 올리면 안의 주요 부분은 이미 주석을 달았다.
AndroidManifest.xml
 <activity  android:name=".MainActivity" android:label="@string/app_name" android:windowSoftInputMode="stateHidden" >

android: window Soft Input Mode = "state Hidden"은 주로 액티브에 들어가서 플로피 키보드가 자동으로 나오는 것을 막는 것입니다.
layout.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scroll" android:layout_width="fill_parent" android:layout_height="fill_parent" >

    <LinearLayout  android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

        <EditText  android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="   1" />

        <EditText  android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="   2" />

        <EditText  android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="   3" />

        <EditText  android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="   4" />

        <EditText  android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="   5" />

        <EditText  android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="   6" />

        <EditText  android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="   7" />

        <EditText  android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="   8" />

        <EditText  android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="   9" />

        <EditText  android:id="@+id/edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="   10" />

        <Button  android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="button" />
    </LinearLayout>

</ScrollView>

레이아웃에서 주요한 것은 ScrollView입니다. 이렇게 하면 플로피 키보드가 표시될 때 ScrollView를 통해 인터페이스를 미끄러뜨릴 수 있습니다.
MainActivity
public class MainActivity extends Activity implements OnTouchListener {
    private ScrollView scrollView;
    private EditText editText;
    private Handler handler;
    private LinearLayout layout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    private void init() {
        editText = (EditText) findViewById(R.id.edittext);
        scrollView = (ScrollView) findViewById(R.id.scroll);
        layout = (LinearLayout) findViewById(R.id.layout);
        handler = new Handler();
        editText.setOnTouchListener(this);
        layout.setOnTouchListener(this);
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.edittext:
            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    // scrollview     
                        scrollView.fullScroll(ScrollView.FOCUS_DOWN);
                }
            }, 100);
            break;
        case R.id.layout:
            //          
            InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
            return imm.hideSoftInputFromWindow(getCurrentFocus()
                    .getWindowToken(), 0);
        default:
            break;
        }
        return false;
    }
}

사용자가 맨 아래에 있는 편집 텍스트를 눌렀을 때 ScrollView는 맨 아래로 그어져서 Button을 완전히 표시할 수 있습니다.OK 여기까지, 소프트 키보드 가림 버튼은 완전히 해결됐다.

좋은 웹페이지 즐겨찾기