Fixes keyboard issues

blinds
Laurent 3 years ago
parent d2edbb0d3c
commit 0c7d99f288
  1. 104
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStakesFragment.kt
  2. 9
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/AbstractKeyboardView.kt
  3. 26
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardAmountView.kt
  4. 5
      app/src/main/java/net/pokeranalytics/android/ui/view/keyboard/StakesKeyboardView.kt
  5. 118
      app/src/main/res/layout/activity_new_data.xml
  6. 10
      app/src/main/res/layout/bottom_sheet_stakes.xml
  7. 51
      app/src/main/res/layout/view_keyboard_stakes.xml

@ -8,9 +8,10 @@ import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import androidx.core.widget.addTextChangedListener
import kotlinx.android.synthetic.main.view_keyboard_stakes.view.*
import net.pokeranalytics.android.databinding.BottomSheetStakesBinding
import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException
import java.text.NumberFormat
import java.text.ParseException
@ -39,20 +40,6 @@ class BottomSheetStakesFragment : BottomSheetFragment() {
override fun onStart() {
super.onStart()
// binding.editText2.setTextIsSelectable(true)
// binding.editText2.isFocusableInTouchMode = true
// binding.editText2.requestFocus()
//
// val mgr: InputMethodManager? =
// requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager?
// mgr?.hideSoftInputFromWindow(binding.editText2.windowToken, InputMethodManager.SHOW_FORCED)
// binding.editText2.findFocus()
}
/**
@ -62,12 +49,17 @@ class BottomSheetStakesFragment : BottomSheetFragment() {
// this.viewModel.isEditingBlinds = this.viewModel.row == SessionRow.BLINDS
}
private fun focusBlindsAndHideKeyboard() {
binding.blindsEditText.requestFocus()
private fun focusEditTextAndHideKeyboard(editText: EditText) {
editText.requestFocus()
editText.onCreateInputConnection(EditorInfo())?.let {
binding.stakesKeyboard.inputConnection = it
}
val mgr: InputMethodManager? =
requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager?
mgr?.hideSoftInputFromWindow(binding.blindsEditText.windowToken, InputMethodManager.SHOW_FORCED)
mgr?.hideSoftInputFromWindow(editText.windowToken, InputMethodManager.SHOW_FORCED)
}
@ -89,7 +81,14 @@ class BottomSheetStakesFragment : BottomSheetFragment() {
anteED.hintResId?.let { binding.anteEditText.hint = getString(it) }
}
binding.anteEditText.inputType = anteED.inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
// binding.anteEditText.inputType = anteED.inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
// binding.anteKeyboard.toolbar.isVisible = false
// binding.anteKeyboard.visibility = View.GONE
binding.anteEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER)
binding.anteEditText.showSoftInputOnFocus = false
// Blinds
val blindsED = data[1]
@ -99,61 +98,36 @@ class BottomSheetStakesFragment : BottomSheetFragment() {
blindsED.hintResId?.let { binding.blindsEditText.hint = getString(it) }
}
// data[0].hintResId?.let { binding.anteEditText.hint = getString(it) }
// data[1].hintResId?.let { binding.blindsEditText.hint = getString(it) }
// binding.editText2.setRawInputType(InputType.TYPE_CLASS_TEXT) //= InputType.TYPE_NULL // data[1].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
// binding.editText2.inputType = InputType.TYPE_NULL
// binding.editText2.setTextIsSelectable(false)
// editText.setTextIsSelectable(true)
binding.blindsEditText.onCreateInputConnection(EditorInfo())?.let {
binding.stakesKeyboard.inputConnection = it
}
// binding.editText2.isFocusableInTouchMode = false
binding.blindsEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER)
// binding.editText2.setTextIsSelectable(true)
binding.blindsEditText.showSoftInputOnFocus = false
binding.blindsEditText.setOnTouchListener { view, motionEvent ->
binding.blindsEditText.setOnTouchListener { _, _ ->
this.focusBlindsAndHideKeyboard()
this.focusEditTextAndHideKeyboard(binding.blindsEditText)
// binding.editText2.requestFocus()
//
// val mgr: InputMethodManager? =
// requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager?
// mgr?.hideSoftInputFromWindow(binding.editText2.windowToken, InputMethodManager.SHOW_FORCED)
// binding.stakesKeyboard.visibility = View.VISIBLE
binding.stakesKeyboard.value_separator.visibility = View.VISIBLE
return@setOnTouchListener true
}
// binding.editText2.requestFocus()
binding.anteEditText.setOnTouchListener { _, _ ->
binding.blindsEditText.onCreateInputConnection(EditorInfo())?.let {
binding.stakesKeyboard.inputConnection = it
// binding.anteKeyboard.setInputConnection(binding.anteEditText)
this.focusEditTextAndHideKeyboard(binding.anteEditText)
} ?: throw PAIllegalStateException("No connection for editText")
// if (this.model.valueAsHint) {
//
// this.model.ante?.let {
// binding.anteEditText.hint = NumberFormat.getInstance().format(it)
// }
// this.model.stringValue?.let {
// if (it.isNotBlank()) {
// binding.blindsEditText.hint = it
// }
// }
//// if (this.viewModel.stringValue?.isNotBlank()) { editText.hint = values[0] }
//// if (values[1].isNotBlank()) { editText2.hint = values[1] }
// } else {
// binding.anteEditText.setText(this.model.stringValue)
// binding.blindsEditText.setText(this.model.secondStringValue)
// }
binding.stakesKeyboard.value_separator.visibility = View.GONE
// binding.stakesKeyboard.visibility = View.VISIBLE
// binding.stakesKeyboard.visibility = View.GONE
return@setOnTouchListener true
}
binding.anteEditText.addTextChangedListener { text ->
text?.let {
@ -171,16 +145,6 @@ class BottomSheetStakesFragment : BottomSheetFragment() {
this.model.secondStringValue = it?.toString()
}
// binding.editText2.setOnEditorActionListener { _, actionId, _ ->
// if (actionId == EditorInfo.IME_ACTION_DONE) {
// this.onRowValueChanged()
//// this.delegate.onRowValueChanged(values, row)
// dismiss()
// true
// } else {
// false
// }
// }
}
}

@ -1,9 +1,16 @@
package net.pokeranalytics.android.ui.modules.handhistory.views
import android.content.Context
import android.util.AttributeSet
import android.widget.FrameLayout
abstract class AbstractKeyboardView(context: Context) : FrameLayout(context) {
abstract class AbstractKeyboardView : FrameLayout {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
var keyboardListener: KeyboardListener? = null
set(value) {

@ -1,6 +1,7 @@
package net.pokeranalytics.android.ui.modules.handhistory.views
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputConnection
@ -19,6 +20,7 @@ import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.util.extensions.noGroupingFormatted
import timber.log.Timber
import java.text.DecimalFormatSymbols
class NumericKey : RowRepresentable {
@ -63,9 +65,16 @@ class NumericKey : RowRepresentable {
}
class KeyboardAmountView(context: Context) : AbstractKeyboardView(context),
class KeyboardAmountView : AbstractKeyboardView,
StaticRowRepresentableDataSource, RowRepresentableDelegate {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
/***
* The adapter managing the grid displayed keyboard
*/
@ -144,16 +153,19 @@ class KeyboardAmountView(context: Context) : AbstractKeyboardView(context),
// Timber.d("edit text = $editText")
this.editText = editText
this.setInputConnection(editText)
editText.setText(amount?.noGroupingFormatted)
editText.requestFocus()
editText.isEnabled = true // avoid crashes due to input connection null
}
fun setInputConnection(editText: EditText) {
this.editText = editText
editText.onCreateInputConnection(EditorInfo())?.let {
this.inputConnection = it
} ?: run { throw PAIllegalStateException("EditText did not return an input Connection") }
} ?: throw PAIllegalStateException("EditText did not return an input Connection")
}
override fun adapterRows(): List<RowRepresentable> {
@ -175,6 +187,8 @@ class KeyboardAmountView(context: Context) : AbstractKeyboardView(context),
val key = row as NumericKey
Timber.d("this.inputConnection = ${this.inputConnection}")
this.inputConnection?.let {
when {
@ -190,9 +204,7 @@ class KeyboardAmountView(context: Context) : AbstractKeyboardView(context),
this.keyboardListener?.amountChanged(this.editText.text.toString())
} ?: run {
throw PAIllegalStateException("Requires an input connection to handle key selections")
}
} ?: throw PAIllegalStateException("Requires an input connection to handle key selections")
}

@ -16,11 +16,8 @@ class StakesKeyboardView : LinearLayoutCompat {
var inputConnection: InputConnection? = null
/**
* Constructors
*/
constructor(context: Context) : super(context) {
// init()
init(context, null)
}
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {

@ -22,88 +22,88 @@
tools:visibility="visible">
<LinearLayout
android:id="@+id/newCashGame"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_marginTop="8dp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp">
android:id="@+id/newTransaction"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_marginBottom="8dp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:tint="@color/green"
app:srcCompat="@drawable/add_cash_game" />
android:layout_width="32dp"
android:layout_height="32dp"
android:tint="@color/green"
app:srcCompat="@drawable/add_transaction" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/PokerAnalyticsTheme.TextView.RowTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/new_cash_game"
app:layout_constraintEnd_toEndOf="parent" />
style="@style/PokerAnalyticsTheme.TextView.RowTitle"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/new_operation"
app:layout_constraintEnd_toEndOf="parent" />
</LinearLayout>
<LinearLayout
android:id="@+id/newTournament"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp">
android:id="@+id/new_hand_history"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:tint="@color/green"
app:srcCompat="@drawable/add_tournament" />
android:layout_width="32dp"
android:layout_height="32dp"
android:tint="@color/green"
app:srcCompat="@drawable/add_hand" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/PokerAnalyticsTheme.TextView.RowTitle"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/new_tournament"
app:layout_constraintEnd_toEndOf="parent" />
style="@style/PokerAnalyticsTheme.TextView.RowTitle"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/new_hand" />
</LinearLayout>
<LinearLayout
android:id="@+id/new_hand_history"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp">
android:id="@+id/newTournament"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:tint="@color/green"
app:srcCompat="@drawable/add_hand" />
android:layout_width="32dp"
android:layout_height="32dp"
android:tint="@color/green"
app:srcCompat="@drawable/add_tournament" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/PokerAnalyticsTheme.TextView.RowTitle"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/new_hand" />
style="@style/PokerAnalyticsTheme.TextView.RowTitle"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/new_tournament"
app:layout_constraintEnd_toEndOf="parent" />
</LinearLayout>
<LinearLayout
android:id="@+id/newTransaction"
android:id="@+id/newCashGame"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
@ -114,14 +114,14 @@
android:layout_width="32dp"
android:layout_height="32dp"
android:tint="@color/green"
app:srcCompat="@drawable/add_transaction" />
app:srcCompat="@drawable/add_cash_game" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/PokerAnalyticsTheme.TextView.RowTitle"
android:layout_width="160dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/new_operation"
android:text="@string/new_cash_game"
app:layout_constraintEnd_toEndOf="parent" />
</LinearLayout>

@ -51,7 +51,6 @@
app:layout_constraintTop_toTopOf="parent"
tools:text="10" />
</androidx.constraintlayout.widget.ConstraintLayout>
<net.pokeranalytics.android.ui.view.keyboard.StakesKeyboardView
@ -63,4 +62,13 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<!-- <net.pokeranalytics.android.ui.modules.handhistory.views.KeyboardAmountView-->
<!-- android:id="@+id/ante_keyboard"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- app:layout_constraintTop_toBottomOf="@id/top_container"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintBottom_toBottomOf="parent" />-->
</androidx.constraintlayout.widget.ConstraintLayout>

@ -12,32 +12,32 @@
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_1"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginBottom="1dp"
android:layout_marginEnd="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_4"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginVertical="1dp"
android:layout_marginEnd="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_7"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginVertical="1dp"
android:layout_marginEnd="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_decimal"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginEnd="1dp"
android:layout_marginTop="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
@ -52,32 +52,32 @@
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_2"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginBottom="1dp"
android:layout_marginHorizontal="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_5"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginVertical="1dp"
android:layout_marginHorizontal="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_8"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginVertical="1dp"
android:layout_marginHorizontal="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_0"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginHorizontal="1dp"
android:layout_marginTop="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
@ -92,32 +92,32 @@
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_3"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginBottom="1dp"
android:layout_marginHorizontal="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_6"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginVertical="1dp"
android:layout_marginHorizontal="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_9"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginVertical="1dp"
android:layout_marginHorizontal="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_back"
style="@style/PokerAnalyticsTheme.KeyboardButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_marginHorizontal="1dp"
android:layout_marginTop="1dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
@ -126,9 +126,8 @@
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/value_separator"
android:layout_marginStart="1dp"
style="@style/PokerAnalyticsTheme.KeyboardHighlightedButton"
android:layout_marginVertical="2dp"
android:layout_marginHorizontal="2dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

Loading…
Cancel
Save