mirror of
				https://github.com/SimpleMobileTools/Simple-Keyboard.git
				synced 2025-06-05 21:49:26 +02:00 
			
		
		
		
	Merge pull request #259 from dmitriy-chernysh/autofil-crash-fix#248
Autofil crash fix#248
This commit is contained in:
		| @@ -2,6 +2,7 @@ package com.simplemobiletools.keyboard.services | ||||
|  | ||||
| import android.annotation.SuppressLint | ||||
| import android.content.SharedPreferences | ||||
| import android.graphics.Bitmap | ||||
| import android.graphics.drawable.Icon | ||||
| import android.graphics.drawable.LayerDrawable | ||||
| import android.graphics.drawable.RippleDrawable | ||||
| @@ -38,6 +39,7 @@ import com.simplemobiletools.keyboard.extensions.safeStorageContext | ||||
| import com.simplemobiletools.keyboard.helpers.* | ||||
| import com.simplemobiletools.keyboard.interfaces.OnKeyboardActionListener | ||||
| import com.simplemobiletools.keyboard.views.MyKeyboardView | ||||
| import java.io.ByteArrayOutputStream | ||||
| import java.util.Locale | ||||
|  | ||||
| // based on https://www.androidauthority.com/lets-build-custom-keyboard-android-832362/ | ||||
| @@ -435,10 +437,12 @@ class SimpleKeyboardIME : InputMethodService(), OnKeyboardActionListener, Shared | ||||
|  | ||||
|         val maxWidth = resources.getDimensionPixelSize(R.dimen.suggestion_max_width) | ||||
|         val height = resources.getDimensionPixelSize(R.dimen.label_text_size) + verticalPadding * 2 | ||||
|         val chipBackgroundIcon: Icon = rippleBg.toBitmap(width = maxWidth, height = height).toIcon() | ||||
|  | ||||
|         val chipStyle = | ||||
|             ViewStyle.Builder() | ||||
|                 .setBackground(Icon.createWithBitmap(rippleBg.toBitmap(width = maxWidth, height = height))) | ||||
|                 // don't use Icon.createWithBitmap(), it crashes the app. Issue https://github.com/SimpleMobileTools/Simple-Keyboard/issues/248 | ||||
|                 .setBackground(chipBackgroundIcon) | ||||
|                 .setPadding(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding) | ||||
|                 .build() | ||||
|  | ||||
| @@ -471,4 +475,14 @@ class SimpleKeyboardIME : InputMethodService(), OnKeyboardActionListener, Shared | ||||
|     override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { | ||||
|         keyboardView?.setupKeyboard() | ||||
|     } | ||||
|  | ||||
|     private fun Bitmap.toIcon(): Icon { | ||||
|         val byteArray: ByteArray = ByteArrayOutputStream().let { outputStream -> | ||||
|             this.compress(Bitmap.CompressFormat.PNG, 100, outputStream) | ||||
|             outputStream.toByteArray() | ||||
|         } | ||||
|         this.recycle() | ||||
|  | ||||
|         return Icon.createWithData(byteArray, 0, byteArray.size) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -598,7 +598,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut | ||||
|                     label, (key.width / 2).toFloat(), key.height / 2 + (paint.textSize - paint.descent()) / 2, paint | ||||
|                 ) | ||||
|  | ||||
|                 if (key.topSmallNumber.isNotEmpty() && !context.config.showNumbersRow) { | ||||
|                 if (key.topSmallNumber.isNotEmpty() && !(context.config.showNumbersRow && Regex("\\d").matches(key.topSmallNumber))) { | ||||
|                     canvas.drawText(key.topSmallNumber, key.width - mTopSmallNumberMarginWidth, mTopSmallNumberMarginHeight, smallLetterPaint) | ||||
|                 } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user