垂直滚轮视图:如何使所选项目可编辑?

时间:2016-10-20 20:32:14

标签: android android-custom-view

我正在使用kankan.wheel.widget.WheelView在我的应用中添加垂直选取器轮视图。我的WheelView中的项目是EditText s,我希望所选项目在点击时获得焦点。

我了解WheelViewView的直接子类,而不是ViewGroup,其LinearLayout字段(包含项目)不是真正的孩子,但仅用于绘制内容。如何将焦点移动到EditText项之一(并显示键盘以实际编辑文本)?我可以在onTouchEvent(MotionEvent event)中添加一些内容吗?我是否需要将WheelView扩展为ViewGroup FrameLayout,并将其LinearLayout字段添加为其子项?

1 个答案:

答案 0 :(得分:0)

我终于找到了解决这个问题的方法。代码有点复杂,但基本上我已经创建了一个新的自定义视图EditableWheelView,它扩展了FrameLayout并像这样膨胀XML:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <kankan.wheel.widget.WheelView
        android:id="@+id/editable_scroll_view_wheel_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <FrameLayout
        android:id="@+id/editable_scroll_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical" />

</merge>

使用内部FrameLayout,允许我在WheelView上添加EditText

在代码中,每次选择内部WheelView的项目时,我都会使用相同的适配器重新创建它并将其添加到editable_scroll_view_container。我还设法将内部WheelView的值复制到EditText容器中的FrameLayout。取消选择该项后,我只需删除editable_scroll_view_container

的内容