如何创建customview触摸相同的timerpicker?

时间:2018-03-15 02:58:05

标签: android

我想创建一个View相同的Image。 enter image description here 触摸视图上的值: enter image description here

我使用解决方案创建TextView并触摸TextView: 这是布局xml:我创建6个TextViews以在屏幕上触摸时显示值。

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center"
            android:orientation="horizontal">    
            <TextView
                android:id="@+id/txtPreSelect1"
                android:layout_width="@dimen/d_60"
                android:layout_height="match_parent"                   
                android:gravity="center"                   
                android:text="000"                     
                />

            <TextView
                android:id="@+id/txtPreSelect2"
                android:layout_width="@dimen/d_60"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="0"
              />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"                
            >    
            <TextView
                android:layout_width="200dp"
                android:layout_height="1dp"
                 />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/txtSelect1"
                android:layout_width="@dimen/d_60"
                android:layout_height="match_parent"
                android:layout_marginRight="@dimen/d_40"
                android:gravity="center"
                android:text="001"
               />

            <TextView
                android:id="@+id/txtSelect2"
                android:layout_width="@dimen/d_60"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="1"
               />
        </LinearLayout>    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">

            <TextView
                android:layout_width="200dp"
                android:layout_height="1dp"
                />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/txtNextSelect1"
                android:layout_width="@dimen/d_60"
                android:layout_height="match_parent"
                android:layout_marginRight="@dimen/d_40"
                android:gravity="center"
                android:text="002"
               />

            <TextView
                android:id="@+id/txtNextSelect2"
                android:layout_width="@dimen/d_60"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="2"
                />
        </LinearLayout>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="1dp"
            />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"               
            android:gravity="center|right"
            android:orientation="horizontal">  

            <TextView
                android:id="@+id/btnCancel"
                android:layout_width="wrap_content"
                android:layout_height="40dp"                   
                android:gravity="center"
                android:text="@string/btnCancel"/>

            <TextView
                android:id="@+id/btnOK"
                android:layout_width="wrap_content"
                android:layout_height="40dp"                                    
                android:text="@string/btnOK"
               />
        </LinearLayout>
    </LinearLayout>

我在TextViews上创建事件Touch,以更改Textview的值:

dialog.txtPreSelect1.setOnTouchListener {v: View, event: MotionEvent ->
        // Perform tasks here
        when (event.action)
        {
            MotionEvent.ACTION_DOWN ->{
                yValue=event.y
            }
            MotionEvent.ACTION_MOVE ->{
                val curentY=event.y
                if(curentY>yValue)
                {
                    if(curentY>yValue) {
                        yValue=curentY
                        var iStartValue=dialog.txtPreSelect1.text.toString().toInt() - iStep1

                            dialog.txtPreSelect1.text = iStartValue.toString()

                        iStartValue=iStartValue +iStep1
                        dialog.txtSelect1.text = iStartValue.toString()
                        iStartValue=iStartValue +iStep1                                                            dialog.txtNextSelect1.text = iStartValue.toString()

                    }
                }
                else if(curentY<yValue)
                {
                    if(curentY<yValue) {
                        yValue=curentY
                        var iStartValue=dialog.txtPreSelect1.text.toString().toInt() + iStep1

                         dialog.txtPreSelect1.text = iStartValue.toString()

                        iStartValue += iStep1
                        dialog.txtSelect1.text = iStartValue.toString()                           
                        dialog.txtNextSelect1.text = iStartValue.toString()

                    }

                }
            }
        }
        true
    }

如何创建事件移动文本相同的图像2? 或存在其他视图可以处理我的工作? 谢谢大家。

2 个答案:

答案 0 :(得分:1)

如果我理解正确您的问题是使用列表创建两个视图,那么您可以单独触摸和滚动它们。

您可以尝试深入了解与您尝试访问的库非常相似的库:SingleDateAndTimePicker

答案 1 :(得分:0)

我最好的猜测是你想使用原生组件。您可以使用ListView,但这需要的代码多于Number Picker。 Number Picker专门用于处理此类情况。

在这里,Nice example可以向您展示如何在对话框中使用它。基本上你需要一个水平方向LinearLayout并在其中放置两个Number Picker

您可以在java / kotlin的帮助下设置MinValueMaxValue,如下所示:

numberPicker.setMaxValue(50);
numberPicker.setMinValue(1);

如果您有任何疑问,请与我们联系。