Android 自定义键盘未调整大小 window 问题

Android Custom Keyboard not resizing the window Issue

您好,我正在关注 this link 以实施 CustomKeyboard。一切都很完美,除非我的布局中有 EditTexts 的数量。当 keyboard 出现时,window 没有调整大小,假设我正在尝试向 EditTexts 输入数据,但位于底部的数据会被 keyboard 覆盖。调整 resize 和使用 manifest 调整平移等解决方案在这种情况下不起作用,我也尝试将 ScrollView 放入 layout,但没有得到任何解决方案。请看下面给出的我的布局。

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >

  <EditText
    android:id="@+id/edittext0"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:drawableRight="@drawable/hex"
    android:inputType="text" />

<EditText
    android:id="@+id/edittext1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/edittext0"
    android:layout_centerHorizontal="true"
    android:drawableRight="@drawable/txt"
    android:inputType="text" />

<EditText
    android:id="@+id/edittext2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/edittext1"
    android:layout_centerHorizontal="true"
    android:drawableRight="@drawable/txt"
    android:inputType="text" />

<EditText
    android:id="@+id/edittext3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/edittext2"
    android:layout_centerHorizontal="true"
    android:drawableRight="@drawable/hex"
    android:inputType="text" />

<EditText
    android:id="@+id/edittext5"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/edittext3"
    android:layout_centerHorizontal="true"
    android:drawableRight="@drawable/hex"
    android:inputType="text" />


 <EditText
    android:id="@+id/edittext6"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/edittext5"
    android:layout_centerHorizontal="true"
    android:drawableRight="@drawable/hex"
    android:inputType="text" />

  <EditText
    android:id="@+id/edittext7"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/edittext6"
    android:layout_centerHorizontal="true"
    android:drawableRight="@drawable/hex"
    android:inputType="text" />

   <EditText
    android:id="@+id/edittext8"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/edittext7"
    android:layout_centerHorizontal="true"
    android:drawableRight="@drawable/hex"
    android:inputType="text" />



<!-- NOTE No need to develop a system service for keyboard, there is a standard View for that (well, not completely standard, its in a funny package 'android.inputmethodservice'. -->
<!-- NOTE The graphical layout does not know the package ('java.lang.NoClassDefFoundError: Could not initialize class android.inputmethodservice.KeyboardView') so the keyboard is not shown. -->
<!-- <android.inputmethodservice.KeyboardView
    android:id="@+id/keyboardview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:visibility="gone" 
    android:background="@drawable/normal"/>
 -->
<nl.fampennings.keyboard.CustomKeyboardView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
     android:id="@+id/keyboardview"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:visibility="gone" 
   android:keyBackground="@drawable/samplekeybackground"/>

请帮我解决。谢谢。

好的,我得到了解决方案。请找到修改后的布局代码。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
          android:layout_weight="1" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/edittext0"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:drawableRight="@drawable/hex"
                android:inputType="text" />

            <EditText
                android:id="@+id/edittext1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/edittext0"
                android:layout_centerHorizontal="true"
                android:drawableRight="@drawable/txt"
                android:inputType="text" />

            <EditText
                android:id="@+id/edittext2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/edittext1"
                android:layout_centerHorizontal="true"
                android:drawableRight="@drawable/txt"
                android:inputType="text" />

            <EditText
                android:id="@+id/edittext3"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/edittext2"
                android:layout_centerHorizontal="true"
                android:drawableRight="@drawable/hex"
                android:inputType="text" />

            <EditText
                android:id="@+id/edittext5"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/edittext3"
                android:layout_centerHorizontal="true"
                android:drawableRight="@drawable/hex"
                android:inputType="text" />

            <EditText
                android:id="@+id/edittext6"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/edittext5"
                android:layout_centerHorizontal="true"
                android:drawableRight="@drawable/hex"
                android:inputType="text" />

            <EditText
                android:id="@+id/edittext7"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/edittext6"
                android:layout_centerHorizontal="true"
                android:drawableRight="@drawable/hex"
                android:inputType="text" />

            <EditText
                android:id="@+id/edittext8"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/edittext7"
                android:layout_centerHorizontal="true"
                android:drawableRight="@drawable/hex"
                android:inputType="text" />
        </LinearLayout>
    </ScrollView>

    <nl.fampennings.keyboard.CustomKeyboardView
        android:id="@+id/keyboardview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:keyBackground="@drawable/samplekeybackground"
        android:visibility="gone" />
</LinearLayout>

</RelativeLayout>

添加一个linearLayout作为主父布局的子布局;向该布局添加一个权重为 1 的滚动视图,并将另一个布局添加到滚动视图作为子项(如 EditTexts 等)的容器。键盘视图应添加到与 scrollView 包含的布局相同的布局中。我希望该解决方案对某人有所帮助。