Skip to content

Commit 8f307dc

Browse files
authored
Merge pull request #259 from dmitriy-chernysh/autofil-crash-fix#248
Autofil crash fix#248
2 parents 8cdfa11 + 079c69f commit 8f307dc

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

app/src/main/kotlin/com/simplemobiletools/keyboard/services/SimpleKeyboardIME.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.simplemobiletools.keyboard.services
22

33
import android.annotation.SuppressLint
44
import android.content.SharedPreferences
5+
import android.graphics.Bitmap
56
import android.graphics.drawable.Icon
67
import android.graphics.drawable.LayerDrawable
78
import android.graphics.drawable.RippleDrawable
@@ -38,6 +39,7 @@ import com.simplemobiletools.keyboard.extensions.safeStorageContext
3839
import com.simplemobiletools.keyboard.helpers.*
3940
import com.simplemobiletools.keyboard.interfaces.OnKeyboardActionListener
4041
import com.simplemobiletools.keyboard.views.MyKeyboardView
42+
import java.io.ByteArrayOutputStream
4143
import java.util.Locale
4244

4345
// based on https://www.androidauthority.com/lets-build-custom-keyboard-android-832362/
@@ -435,10 +437,12 @@ class SimpleKeyboardIME : InputMethodService(), OnKeyboardActionListener, Shared
435437

436438
val maxWidth = resources.getDimensionPixelSize(R.dimen.suggestion_max_width)
437439
val height = resources.getDimensionPixelSize(R.dimen.label_text_size) + verticalPadding * 2
440+
val chipBackgroundIcon: Icon = rippleBg.toBitmap(width = maxWidth, height = height).toIcon()
438441

439442
val chipStyle =
440443
ViewStyle.Builder()
441-
.setBackground(Icon.createWithBitmap(rippleBg.toBitmap(width = maxWidth, height = height)))
444+
// don't use Icon.createWithBitmap(), it crashes the app. Issue https://github.com/SimpleMobileTools/Simple-Keyboard/issues/248
445+
.setBackground(chipBackgroundIcon)
442446
.setPadding(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding)
443447
.build()
444448

@@ -471,4 +475,14 @@ class SimpleKeyboardIME : InputMethodService(), OnKeyboardActionListener, Shared
471475
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
472476
keyboardView?.setupKeyboard()
473477
}
478+
479+
private fun Bitmap.toIcon(): Icon {
480+
val byteArray: ByteArray = ByteArrayOutputStream().let { outputStream ->
481+
this.compress(Bitmap.CompressFormat.PNG, 100, outputStream)
482+
outputStream.toByteArray()
483+
}
484+
this.recycle()
485+
486+
return Icon.createWithData(byteArray, 0, byteArray.size)
487+
}
474488
}

app/src/main/kotlin/com/simplemobiletools/keyboard/views/MyKeyboardView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
598598
label, (key.width / 2).toFloat(), key.height / 2 + (paint.textSize - paint.descent()) / 2, paint
599599
)
600600

601-
if (key.topSmallNumber.isNotEmpty() && !context.config.showNumbersRow) {
601+
if (key.topSmallNumber.isNotEmpty() && !(context.config.showNumbersRow && Regex("\\d").matches(key.topSmallNumber))) {
602602
canvas.drawText(key.topSmallNumber, key.width - mTopSmallNumberMarginWidth, mTopSmallNumberMarginHeight, smallLetterPaint)
603603
}
604604

0 commit comments

Comments
 (0)