我正在使用kankan.wheel.widget.WheelView
在我的应用中添加垂直选取器轮视图。我的WheelView中的项目是EditText
s,我希望所选项目在点击时获得焦点。
我了解WheelView
是View
的直接子类,而不是ViewGroup
,其LinearLayout
字段(包含项目)不是真正的孩子,但仅用于绘制内容。如何将焦点移动到EditText
项之一(并显示键盘以实际编辑文本)?我可以在onTouchEvent(MotionEvent event)
中添加一些内容吗?我是否需要将WheelView
扩展为ViewGroup
FrameLayout
,并将其LinearLayout
字段添加为其子项?
答案 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
。