Create custom AutoCompleteTextView which can be used inside of a TextInputLayout to show a nice square with the suggestion like the other text fields used in the app.
This commit is contained in:
parent
39073e3d9c
commit
b9a765e682
4 changed files with 94 additions and 27 deletions
|
@ -22,7 +22,7 @@ import cy.agorise.bitsybitshareswallet.utils.Constants
|
||||||
import cy.agorise.bitsybitshareswallet.viewmodels.UserAccountViewModel
|
import cy.agorise.bitsybitshareswallet.viewmodels.UserAccountViewModel
|
||||||
import cy.agorise.graphenej.*
|
import cy.agorise.graphenej.*
|
||||||
import kotlinx.android.synthetic.main.fragment_receive_transaction.*
|
import kotlinx.android.synthetic.main.fragment_receive_transaction.*
|
||||||
import java.util.HashMap
|
import java.util.*
|
||||||
|
|
||||||
class ReceiveTransactionFragment : Fragment() {
|
class ReceiveTransactionFragment : Fragment() {
|
||||||
private val TAG = this.javaClass.simpleName
|
private val TAG = this.javaClass.simpleName
|
||||||
|
@ -113,4 +113,27 @@ class ReceiveTransactionFragment : Fragment() {
|
||||||
bitmap.setPixels(pixels, 0, w, 0, 0, w, h)
|
bitmap.setPixels(pixels, 0, w, 0, 0, w, h)
|
||||||
return bitmap
|
return bitmap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Updates the UI to show amount and address to send the payment
|
||||||
|
// *
|
||||||
|
// * @param amount Amount in crypto to be paid
|
||||||
|
// * @param address Address to pay amount
|
||||||
|
// */
|
||||||
|
// private fun updateAmountAddressUI(amount: Double, account: String) {
|
||||||
|
// // Trick to format correctly really small floating point numbers
|
||||||
|
// val df = DecimalFormat("0", DecimalFormatSymbols.getInstance(Locale.ENGLISH))
|
||||||
|
// df.maximumFractionDigits = 340
|
||||||
|
//
|
||||||
|
// val cryptoAmount = Helper.getCryptoAmountLocaleFormatted(
|
||||||
|
// locale, amount,
|
||||||
|
// inputCoinType.toLowerCase(), this
|
||||||
|
// )
|
||||||
|
//
|
||||||
|
// val txtAmount = getString(R.string.please_pay_s_s, cryptoAmount, inputCoinType.toUpperCase())
|
||||||
|
// val txtAddress = getString(R.string.to_s, account)
|
||||||
|
//
|
||||||
|
// tvTotalCryptoAmount.setText(txtAmount)
|
||||||
|
// tvReceivingAddress.setText(txtAddress)
|
||||||
|
// }
|
||||||
}
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
package cy.agorise.bitsybitshareswallet.views
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.util.AttributeSet
|
||||||
|
import com.google.android.material.textfield.TextInputLayout
|
||||||
|
import android.view.inputmethod.InputConnection
|
||||||
|
import android.view.inputmethod.EditorInfo
|
||||||
|
import androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom AutoCompleteTextView to be used inside a TextInputLayout, so that they can share their hint
|
||||||
|
* From https://stackoverflow.com/a/41864063/5428997
|
||||||
|
*/
|
||||||
|
class MyTextInputAutoCompleteTextView : AppCompatAutoCompleteTextView {
|
||||||
|
|
||||||
|
constructor(context: Context) : super(context)
|
||||||
|
|
||||||
|
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
|
||||||
|
|
||||||
|
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
|
||||||
|
|
||||||
|
override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection? {
|
||||||
|
val ic = super.onCreateInputConnection(outAttrs)
|
||||||
|
if (ic != null && outAttrs.hintText == null) {
|
||||||
|
// If we don't have a hint and our parent is a TextInputLayout, use it's hint for the
|
||||||
|
// EditorInfo. This allows us to display a hint in 'extract mode'.
|
||||||
|
val parent = parent
|
||||||
|
if (parent is TextInputLayout) {
|
||||||
|
outAttrs.hintText = parent.hint
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// An EditText that lets you use actions ("Done", "Go", etc.) on multi-line edits.
|
||||||
|
val imeActions = outAttrs.imeOptions and EditorInfo.IME_MASK_ACTION
|
||||||
|
if (imeActions and EditorInfo.IME_ACTION_DONE != 0) {
|
||||||
|
// clear the existing action
|
||||||
|
outAttrs.imeOptions = outAttrs.imeOptions xor imeActions
|
||||||
|
// set the DONE action
|
||||||
|
outAttrs.imeOptions = outAttrs.imeOptions or EditorInfo.IME_ACTION_DONE
|
||||||
|
}
|
||||||
|
if (outAttrs.imeOptions and EditorInfo.IME_FLAG_NO_ENTER_ACTION != 0) {
|
||||||
|
outAttrs.imeOptions = outAttrs.imeOptions and EditorInfo.IME_FLAG_NO_ENTER_ACTION.inv()
|
||||||
|
}
|
||||||
|
return ic
|
||||||
|
}
|
||||||
|
}
|
|
@ -38,30 +38,28 @@
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
style="@style/Widget.Bitsy.TextInputLayout"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"/>
|
android:layout_height="0dp"
|
||||||
|
|
||||||
<Spinner
|
|
||||||
android:id="@+id/spAsset"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="12dp"
|
|
||||||
android:layout_marginStart="12dp"
|
android:layout_marginStart="12dp"
|
||||||
android:visibility="gone"
|
android:hint="@string/text__asset"
|
||||||
app:layout_constraintTop_toTopOf="@+id/tilAmount"
|
app:layout_constraintTop_toTopOf="@id/tilAmount"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintBottom_toBottomOf="@id/tilAmount"
|
||||||
app:layout_constraintStart_toEndOf="@id/centeredVerticalGuideline"/>
|
app:layout_constraintStart_toEndOf="@id/centeredVerticalGuideline"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent">
|
||||||
|
|
||||||
<View
|
<cy.agorise.bitsybitshareswallet.views.MyTextInputAutoCompleteTextView
|
||||||
android:id="@+id/vSpinner"
|
android:id="@+id/actvAsset"
|
||||||
android:layout_width="0dp"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginTop="12dp"
|
android:paddingStart="12dp"
|
||||||
android:background="@color/darkGray"
|
android:paddingEnd="8dp"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/spAsset"
|
android:maxLines="1"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/spAsset"
|
android:lines="1"
|
||||||
app:layout_constraintStart_toStartOf="@+id/spAsset" />
|
android:imeOptions="actionDone"/>
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/ivQR"
|
android:id="@+id/ivQR"
|
||||||
|
|
|
@ -41,15 +41,16 @@
|
||||||
<!-- Balances -->
|
<!-- Balances -->
|
||||||
<string name="title_transactions">Transactions</string>
|
<string name="title_transactions">Transactions</string>
|
||||||
|
|
||||||
<!-- Send Transaction Fragment -->
|
<!-- Send & Receive Transaction -->
|
||||||
<string name="text__to">To</string>
|
<string name="text__to">To</string>
|
||||||
|
<string name="text__amount">Amount</string>
|
||||||
|
<string name="text__memo">Memo</string>
|
||||||
|
<string name="text__scan_qr">Scan QR</string>
|
||||||
|
<string name="text__asset">Asset</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="title_settings">Settings</string>
|
<string name="title_settings">Settings</string>
|
||||||
<string name="night_mode">Night mode</string>
|
<string name="night_mode">Night mode</string>
|
||||||
<string name="text__amount">Amount</string>
|
|
||||||
<string name="text__memo">Memo</string>
|
|
||||||
<string name="text__scan_qr">Scan QR</string>
|
|
||||||
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in a new issue