diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt index 1b64433..5bddcff 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt @@ -11,6 +11,8 @@ import android.widget.LinearLayout import android.widget.RelativeLayout import android.widget.TextView import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.AppCompatRadioButton +import com.loper7.date_time_picker.number_picker.NumberPicker import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivityBaseBinding import com.yinuo.safetywatcher.watcher.constant.NAMESPACE_ANDROID @@ -117,9 +119,15 @@ abstract class BaseActivity : AppCompatActivity() { return when (name) { "LinearLayout" -> LinearLayout(context, attrs) "TextView" -> TextView(context, attrs) + "com.loper7.date_time_picker.number_picker.NumberPicker" -> NumberPicker(context, attrs) + "androidx.appcompat.widget.AppCompatRadioButton" -> AppCompatRadioButton(context, attrs) else -> { null } } } + + fun tryFocusBackArea(){ + baseBinding.topBar.tryFocusBackArea() + } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/ChooseParamsActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/ChooseParamsActivity.kt index 071f052..a6662df 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/ChooseParamsActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/ChooseParamsActivity.kt @@ -3,8 +3,12 @@ package com.yinuo.safetywatcher.watcher.ui import android.content.Context import android.content.Intent import android.text.TextUtils +import android.view.KeyEvent import android.view.View +import android.view.View.OnKeyListener import androidx.core.view.isVisible +import com.loper7.date_time_picker.DateTimeConfig.MIN +import com.loper7.date_time_picker.DateTimeConfig.YEAR import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivityChooseParamsBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity @@ -102,6 +106,31 @@ class ChooseParamsActivity : NoOptionsActivity() { } } + set4focus() + } + + private fun set4focus() { + val startYearPicker = mBinding.startPicker.getPicker(YEAR) + startYearPicker?.setOnKeyListener(OnKeyListener { _, keyCode, event -> + if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { + if (event.action == KeyEvent.ACTION_DOWN) { + tryFocusBackArea() + return@OnKeyListener true + } + } + return@OnKeyListener false + }) + + val endMinPicker = mBinding.endPicker.getPicker(MIN) + endMinPicker?.setOnKeyListener(OnKeyListener { _, keyCode, event -> + if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { + if (event.action == KeyEvent.ACTION_DOWN) { + mBinding.rbS30.requestFocus() + return@OnKeyListener true + } + } + return@OnKeyListener false + }) } private fun returnDataback() { diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/CommonTopBar.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/CommonTopBar.kt index 30f1a5f..c7f5ec2 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/CommonTopBar.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/CommonTopBar.kt @@ -174,4 +174,8 @@ class CommonTopBar : LinearLayout { WifiHelper.removeCallback(wifiCallback) SimHelper.removeCallback(simCallback) } + + fun tryFocusBackArea(){ + mBinding?.backArea?.requestFocus() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_choose_params.xml b/app/src/main/res/layout/activity_choose_params.xml index 0547f67..ffcf91c 100644 --- a/app/src/main/res/layout/activity_choose_params.xml +++ b/app/src/main/res/layout/activity_choose_params.xml @@ -141,6 +141,8 @@ android:id="@+id/rb_s_30" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:paddingHorizontal="@dimen/_6dp" + android:focusable="true" android:text="@string/second_30" android:textColor="@color/white" android:textSize="@dimen/_28dp" /> @@ -149,6 +151,8 @@ android:id="@+id/rb_m_1" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:paddingHorizontal="@dimen/_6dp" + android:focusable="true" android:text="@string/minute_1" android:textColor="@color/white" android:layout_marginStart="@dimen/_20dp" @@ -158,6 +162,8 @@ android:id="@+id/rb_m_3" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:paddingHorizontal="@dimen/_6dp" + android:focusable="true" android:text="@string/minute_3" android:textColor="@color/white" android:layout_marginStart="@dimen/_20dp" @@ -167,6 +173,8 @@ android:id="@+id/rb_m_5" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:paddingHorizontal="@dimen/_6dp" + android:focusable="true" android:text="@string/minute_5" android:textColor="@color/white" android:layout_marginStart="@dimen/_20dp" @@ -203,6 +211,8 @@ android:layout_height="@dimen/_81dp" android:background="@drawable/confirm_btn_bg" android:layout_marginTop="@dimen/font_46dp" + android:focusable="true" + android:nextFocusRight="@id/tv_confirm" android:gravity="center" android:text="@string/confirm" android:textColor="@color/white" diff --git a/app/src/main/res/layout/layout_date_picker_globalization1.xml b/app/src/main/res/layout/layout_date_picker_globalization1.xml index b605676..a2e9188 100644 --- a/app/src/main/res/layout/layout_date_picker_globalization1.xml +++ b/app/src/main/res/layout/layout_date_picker_globalization1.xml @@ -10,6 +10,7 @@ android:id="@+id/np_datetime_year" android:layout_width="@dimen/_121dp" android:layout_height="wrap_content" + android:focusable="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -21,6 +22,7 @@ android:id="@+id/np_datetime_month" android:layout_width="@dimen/_90dp" android:layout_height="wrap_content" + android:focusable="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/np_datetime_year" app:layout_constraintTop_toTopOf="parent" @@ -32,6 +34,7 @@ android:id="@+id/np_datetime_day" android:layout_width="@dimen/_90dp" android:layout_height="wrap_content" + android:focusable="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/np_datetime_month" app:layout_constraintTop_toTopOf="parent" @@ -44,6 +47,7 @@ android:layout_width="@dimen/_90dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" + android:focusable="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/np_datetime_day" app:layout_constraintTop_toTopOf="parent" @@ -55,6 +59,7 @@ android:id="@+id/np_datetime_minute" android:layout_width="@dimen/_90dp" android:layout_height="wrap_content" + android:focusable="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/np_datetime_hour" app:layout_constraintTop_toTopOf="parent"