【问题标题】:Android Listview on top of Keyboardview在 Keyboardview 之上的 Android Listview
【发布时间】:2013-05-25 11:05:10
【问题描述】:

您好,我实现了一个 SearchView,它在 ListView 中显示结果。我面临的问题是我有一个自定义键盘,而我的 Listview 与 keyboardView 重叠,所以我无法按下键盘上的某些键。我想要实现的是将我的 Listview 显示在 KeyboardView 下。这是我的布局文件

<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"
android:background="@drawable/basic_bg" >

<android.inputmethodservice.KeyboardView
    android:id="@+id/keyboardView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:visibility="gone" />



<SearchView
    android:id="@+id/searchView"
    android:layout_width="400dp"
    android:layout_height="40dp"
    android:layout_alignParentTop="true"
    android:layout_alignRight="@+id/textView3"
    android:layout_marginLeft="49dp"
    android:layout_marginTop="25dp"
    android:layout_toRightOf="@+id/imageViewUp"
    android:background="@drawable/delete_bg_5line"
    android:ems="10"
    android:hint="Destination Input Text"
    android:textColor="#87CEFA" >
</SearchView>

<ListView
    android:id="@+id/main_list_View"
    android:layout_width="450dp"
    android:layout_height="235dp"
    android:layout_alignLeft="@+id/searchView"
    android:layout_below="@+id/searchView"
    android:listSelector="@android:color/transparent"
    android:scrollbars="none" >
</ListView>

</RelativeLayout>

我还想在用户浏览 ListView 时隐藏自定义键盘 以及更改键盘可见性的代码

searchtextView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method st4ub
            toggleKeyboardVisibility(searchtextView);

        }

        private void toggleKeyboardVisibility(
                AutoCompleteTextView searchViewWidget) {
            KeyboardView keyboardView = (KeyboardView) findViewById(R.id.keyboardView);
            int visibility = keyboardView.getVisibility();
            switch (visibility) {
            case View.VISIBLE:
                keyboardView.setVisibility(View.GONE);
                break;
            case View.GONE:
            case View.INVISIBLE:
                keyboardView.setVisibility(View.VISIBLE);
                searchtextView = searchViewWidget;
                break;
            }
        }

    });

我想做的另一件事是更改我的键盘键的背景。我无法做到这一点我尝试为每个键添加 android:keyIcon 属性但它不起作用并且当我使用这个属性时,只有预览背景图像会发生变化。我该怎么做呢。

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:horizontalGap="0px"
android:keyBackground="@drawable/custom_keyboard_press_onekey"
android:keyWidth="10%p"
android:verticalGap="0px" >

<Row>

    <Key
        android:codes="1"
        android:iconPreview="@drawable/custom_keyboard_press_onekey"
        android:isRepeatable="true"
        android:keyEdgeFlags="left"
        android:keyIcon="@drawable/custom_keyboard_press_onekey"
        android:keyLabel="1" />
 </Row>
</Keyboard>

这就是我实例化键盘的方式

    final KeyboardView keyboardView = (KeyboardView) findViewById(R.id.keyboardView);
    Keyboard keyboard = new Keyboard(this, R.layout.keyboard);
    keyboardView.setKeyboard(keyboard);
    keyboardView.setEnabled(true);
    keyboardView.setPreviewEnabled(true);

    keyboardView.setOnKeyboardActionListener(this);

有人可以指导我哪里出错或建议我应该如何进行。感谢您的帮助。

【问题讨论】:

  • 嘿,如果我以上述方式创建布局,我会收到以下错误“指定的孩子已经有一个父母。您必须首先在孩子的父母上调用 removeView()”。你知道吗?

标签: android android-layout android-listview android-keypad android-search


【解决方案1】:

要在列表视图上方查看键盘,请将布局更改为,

 <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"
android:background="@drawable/basic_bg" >

<SearchView
    android:id="@+id/searchView"
    android:layout_width="400dp"
    android:layout_height="40dp"
    android:layout_alignParentTop="true"
    android:layout_alignRight="@+id/textView3"
    android:layout_marginLeft="49dp"
    android:layout_marginTop="25dp"
    android:layout_toRightOf="@+id/imageViewUp"
    android:background="@drawable/delete_bg_5line"
    android:ems="10"
    android:hint="Destination Input Text"
    android:textColor="#87CEFA" >
</SearchView>

<ListView
    android:id="@+id/main_list_View"
    android:layout_width="450dp"
    android:layout_height="235dp"
    android:layout_alignLeft="@+id/searchView"
    android:layout_below="@+id/searchView"
    android:listSelector="@android:color/transparent"
    android:scrollbars="none" >
</ListView>


<android.inputmethodservice.KeyboardView
    android:id="@+id/keyboardView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:visibility="gone" />

</RelativeLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多