如何在android中将scrollview添加到keyboardView

问题描述 投票:5回答:2

我一直在尝试将scrollview添加到我的Android自定义键盘Ime中,但到目前为止我还没有尝试过。

这是我的代码的一部分

keyboard.xml

<?xml version="1.0" encoding="UTF-8"?>
<ScrollView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <android.inputmethodservice.KeyboardView
        android:id="@+id/keyboard"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:isScrollContainer="true"
        android:scrollbarAlwaysDrawHorizontalTrack="true"
        android:scrollbarStyle="insideOverlay"
        android:scrollbars="horizontal"
        android:focusable="true"
    />
</ScrollView>

的.java

 @Override
    public View onCreateInputView() {
        context = getApplicationContext();
        ScrollView scroll = (ScrollView)getLayoutInflater().inflate(R.layout.keyboard,null);
        kv = (KeyboardView)scroll.findViewById(R.id.keyboard);
        keyboard = new Keyboard(this, R.xml.qwerty);
        kv.setPreviewEnabled(false);
        kv.setKeyboard(keyboard);
        kv.setHorizontalScrollBarEnabled(true);
        kv.canScrollHorizontally(1);
        kv.setOnKeyboardActionListener(this);

        return kv;
    }

我收到以下错误

> java.lang.IllegalStateException: The specified child already has a
> parent. You must call removeView() on the child's parent first.

预期:滚动如下图所示(不能上传到这里,看起来我的声誉还不够:))

http://www.fandroides.com/wp-content/uploads/2014/04/Google-keyboard-emojis.png

任何帮助将不胜感激。谢谢

java android keyboard scrollview ime
2个回答
3
投票

尝试进行此更改:

keyboard.xml

<?xml version="1.0" encoding="utf-8"?>
<android.inputmethodservice.KeyboardView
    android:id="@+id/keyboard"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
/>

my_layout.xml

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

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="@dimen/example_height"
            android:id="@+id/keyboard_scroll">
    </ScrollView>

</LinearLayout>

的.java

@Override
public View onCreateInputView() {

    LinearLayout myView = (LinearLayout) View.inflate(this, R.layout.my_layout, null);
    ScrollView scrollView = (ScrollView) myView.findViewById(R.id.keyboard_scroll);

    KeyboardView kv = (KeyboardView) getLayoutInflater().inflate(keyboard.xml, null);
    keyboard = new Keyboard(this, R.xml.qwerty);
    kv.setKeyboard(keyboard);
    kv.setOnKeyboardActionListener(this);

    scrollView.addView(kv);
    return myView;
}

0
投票
LinearLayout myView = (LinearLayout) View.inflate(this, R.layout.my_layout, null);
HorizontalScrollView horizontalScrollView = (HorizontalScrollView) myView.findViewById(R.id.keyboard_scroll);
© www.soinside.com 2019 - 2024. All rights reserved.