마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 소프트 키보드 터치 레이아웃과 키보드 레이아웃 관련 질문드립니다. [closed]

0 추천

안녕하세요!

안드로이드 개발 초보입니다.

실험을 위해서 안드로이드 커스텀 소프트 키보드를 만들려고 합니다. 

현재 아래 스택오버플로우에 예시로 나온 코드를 활용해서 키보드를 완성하였는데, 문제가 있어 질문드립니다.

https://stackoverflow.com/questions/9577304/how-to-make-an-android-custom-keyboard

 

기본적으로 InputMethodService를 이용하여 KeyboardView에 띄워 시스템 키보드를 만들려고 합니다.

제가 생각할 때 키보드 레이아웃이 뭔가 잘못되어서 터치되는 부분이랑 키보드 키 레이아웃?!이랑 뭔가가 안맞는것 같습니다.. 아래 이미지들 처럼 터치는 아래 키를 하고 있지만 입력이 되는 키는 위쪽 키 입니다. 

이 차이가 약 30 px정도 나는 것 같은데, 제일 첫줄이 입력한 키 Height 보다 30px 내려와서 나머지 키들도 다 아래로 밀리는 것 같습니다. 

혹시 어떤 문제 인지 아시는분 있으면 설명 부탁 드립니다!

그리고 해결방안도 제시해주시면 정말 감사하겠습니다!!!

터치 오류_1   

처음이라 잘 몰라 질문이 복잡할텐데 읽어주셔서 정말 감사합니다!

 

질문을 종료한 이유: 해결 완료
안드로이드초보자입니다 (130 포인트) 님이 2019년 6월 9일 질문
안드로이드초보자입니다님이 2019년 6월 10일 closed

1개의 답변

+1 추천

저기 스택오버플로우에 보면

<Key android:codes="-1"    android:keyIcon="@drawable/backspace" android:keyWidth="34%p" android:horizontalGap="4%p"/>
        <Key android:codes="100"    android:keyLabel="Enter" android:keyWidth="53%p" android:horizontalGap="4%p"/>

위에서 horizontalGap이나 width등의 문제인것 같아요.

님께서 해당 코드에 width나 gap을 어떻게 작성하셨는지 공유해주셔야 알 수 있을 것 같습니다.

 

Djleeee (13,180 포인트) 님이 2019년 6월 10일 답변
안녕하세요! 빠른 답변 정말 감사합니다!
key layout xml파일을 말씀하시는거 같은데, 저는 저 스택 오버플로우 내용과는 조금 다르게 아래와 같이 만들었습니다! 여기에 다 들어갈지 모르겠네요..!

    <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"

        android:horizontalGap="0px"
        android:verticalGap="0px"
        android:keyHeight="150px"
        android:keyWidth="10%p"
    >

        <Row android:rowEdgeFlags="top" >
            <Key android:keyLabel="1" android:keyEdgeFlags="left" android:codes="49"/>
            <Key android:keyLabel="2" android:codes="50"/>
            <Key android:keyLabel="3" android:codes="51"/>
            <Key android:keyLabel="4" android:codes="52"/>
            <Key android:keyLabel="5" android:codes="53"/>
            <Key android:keyLabel="6" android:codes="54"/>
            <Key android:keyLabel="7" android:codes="55"/>
            <Key android:keyLabel="8" android:codes="56"/>
            <Key android:keyLabel="9" android:codes="57"/>
            <Key android:keyLabel="0" android:keyEdgeFlags="right" android:codes="48"/>
        </Row>


        <Row>
            <Key android:keyLabel="q" android:keyEdgeFlags="left" android:codes="113" />
            <Key android:keyLabel="w" android:codes="119" />
            <Key android:keyLabel="e" android:codes="101" />
            <Key android:keyLabel="r" android:codes="114" />
            <Key android:keyLabel="t" android:codes="116" />
            <Key android:keyLabel="y" android:codes="121" />
            <Key android:keyLabel="u" android:codes="117" />
            <Key android:keyLabel="i" android:codes="105" />
            <Key android:keyLabel="o" android:codes="111" />
            <Key android:keyLabel="p" android:keyEdgeFlags="right" android:codes="112" />
        </Row>


        <Row>
            <Key android:keyLabel="a" android:keyEdgeFlags="left" android:codes="97"/>
            <Key android:keyLabel="s" android:codes="115"/>
            <Key android:keyLabel="d" android:codes="100"/>
            <Key android:keyLabel="f" android:codes="102"/>
            <Key android:keyLabel="g" android:codes="103"/>
            <Key android:keyLabel="h" android:codes="104"/>
            <Key android:keyLabel="j" android:codes="106"/>
            <Key android:keyLabel="k" android:codes="107"/>
            <Key android:keyLabel="l" android:codes="108"/>
            <Key android:keyLabel="\# \@" android:keyEdgeFlags="right" android:codes="35,64"/>
        </Row>

        <Row>
            <Key android:keyLabel="CAPS" android:keyEdgeFlags="left" android:codes="-1"/>
            <Key android:keyLabel="z" android:codes="122"/>
            <Key android:keyLabel="x" android:codes="120"/>
            <Key android:keyLabel="c" android:codes="99"/>
            <Key android:keyLabel="v" android:codes="118"/>
            <Key android:keyLabel="b" android:codes="98"/>
            <Key android:keyLabel="n" android:codes="110"/>
            <Key android:keyLabel="m" android:codes="109"/>
            <Key android:keyLabel="." android:codes="46"/>
            <Key android:keyLabel="\? ! :" android:keyEdgeFlags="right" android:codes="63,33,58"/>
        </Row>

        <Row android:rowEdgeFlags="bottom">
            <Key android:keyLabel="," android:keyWidth="10%p" android:keyEdgeFlags="left" android:codes="44"/>
            <Key android:keyLabel="/" android:keyWidth="10%p" android:codes="47"/>
            <Key android:keyLabel="SPACE"  android:keyWidth="40%p" android:isRepeatable="true" android:codes="32"/>
            <Key android:keyLabel="DEL" android:keyWidth="20%p" android:isRepeatable="true" android:codes="-5"/>
            <Key android:keyLabel="DONE" android:keyWidth="20%p" android:keyEdgeFlags="right" android:codes="-4"/>

        </Row>

    </Keyboard>

정말 감사합니다!
...