Skip to content

Commit 168bfe4

Browse files
committed
Fix key text size
1 parent 674615f commit 168bfe4

File tree

5 files changed

+88
-37
lines changed

5 files changed

+88
-37
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Change Log
22

3+
## Version 3.1.0 *(13/12/2022)*
4+
5+
- Add text size attribute (thanks @gerynugrh)
6+
- Add typeface attribute (thanks @gerynugrh)
7+
- Add KeyboardCustomSquareActivity to show custom square design (thanks @delacrixmorgan)
8+
- Update dependencies
9+
310
## Version 3.0.0 *(30/12/2018)*
411

512
- Migrate to Kotlin #21

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Add the dependency:
2525

2626
```gradle
2727
dependencies {
28-
compile 'com.github.davidmigloz:number-keyboard:3.0.0'
28+
compile 'com.github.davidmigloz:number-keyboard:3.1.0'
2929
}
3030
```
3131

@@ -56,7 +56,9 @@ Use `NumberKeyboard` view in your layout:
5656
- `keyboard:numberkeyboard_keyPadding="[dimension]"` (default: `16dp`): key padding.
5757
- `keyboard:numberkeyboard_numberKeyBackground="[reference]"` (default: circle): number keys background drawable.
5858
- `keyboard:numberkeyboard_numberKeyTextColor="[reference]"` (default: dark blue): number keys text color.
59-
- `keyboard:numberkeyboard_leftAuxBtnIcon="[reference]"` (default: none): if `keyboardType="custom"`, icon shown in left auxiliary button.
59+
- `keyboard:numberkeyboard_numberKeyTypeface="[reference]"` (default: dark blue): number keys text color.
60+
- `keyboard:numberkeyboard_numberKeyTypeface="[reference]"` (default: none): number keys text typeface.
61+
- `keyboard:numberkeyboard_numberKeyTextSize="[dimension]"` (default: none): number keys text size (if it is not set, the text auto scales to fit the key).
6062
- `keyboard:numberkeyboard_leftAuxBtnBackground="[reference]"` (default: none): if `keyboardType="custom"`, left auxiliary button background.
6163
- `keyboard:numberkeyboard_rightAuxBtnIcon="[reference]"` (default: none): if `keyboardType="custom"`, icon shown in right auxiliary button.
6264
- `keyboard:numberkeyboard_rightAuxBtnBackground="[reference]"` (default: none): if `keyboardType="custom"`, right auxiliary button background.
@@ -73,6 +75,7 @@ Use `NumberKeyboard` view in your layout:
7375
- `setNumberKeyBackground()`: sets number keys background.
7476
- `setNumberKeyTextColor()`: sets number keys text color.
7577
- `setNumberKeyTypeface()`: sets number keys text typeface.
78+
- `setNumberKeyTextSize()`: sets number keys text size in pixels.
7679
- `setLeftAuxButtonIcon()`: sets left auxiliary button icon.
7780
- `setRightAuxButtonIcon()`: sets right auxiliary button icon.
7881
- `setLeftAuxButtonBackground()`: sets left auxiliary button background.

lib/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
22
apply plugin: 'kotlin-android'
33

44
ext.versionMajor = 3 // API Changes, adding big new feature, redesign the App
5-
ext.versionMinor = 0 // New features in a backwards-compatible manner
5+
ext.versionMinor = 1 // New features in a backwards-compatible manner
66
ext.versionPatch = 0 // Backwards-compatible bug fixes
77
ext.versionClassifier = null // Pre-releases (alpha, beta, rc, SNAPSHOT...)
88

lib/src/main/java/com/davidmiguel/numberkeyboard/NumberKeyboard.kt

Lines changed: 74 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ import android.util.TypedValue
77
import android.view.View
88
import android.widget.ImageView
99
import android.widget.TextView
10-
import androidx.annotation.*
10+
import androidx.annotation.AttrRes
11+
import androidx.annotation.ColorRes
12+
import androidx.annotation.Dimension
13+
import androidx.annotation.DrawableRes
1114
import androidx.appcompat.app.AppCompatDelegate
1215
import androidx.constraintlayout.widget.ConstraintLayout
1316
import androidx.core.content.ContextCompat
1417
import androidx.core.content.res.ResourcesCompat
18+
import androidx.core.widget.TextViewCompat
1519
import java.util.*
1620

1721
/**
@@ -22,23 +26,32 @@ class NumberKeyboard : ConstraintLayout {
2226

2327
@Dimension
2428
private var keyWidth: Int = 0
29+
2530
@Dimension
2631
private var keyHeight: Int = 0
32+
2733
@Dimension
2834
private var keyPadding: Int = 0
35+
2936
@DrawableRes
3037
private var numberKeyBackground: Int = 0
38+
3139
@ColorRes
3240
private var numberKeyTextColor: Int = 0
3341
private var numberKeyTypeface: Typeface? = null
42+
3443
@Dimension
35-
private var numberKeyTextSize: Float = 0.0F
44+
private var numberKeyTextSize: Float? = null
45+
3646
@DrawableRes
3747
private var leftAuxBtnIcon: Int = 0
48+
3849
@DrawableRes
3950
private var leftAuxBtnBackground: Int = 0
51+
4052
@DrawableRes
4153
private var rightAuxBtnIcon: Int = 0
54+
4255
@DrawableRes
4356
private var rightAuxBtnBackground: Int = 0
4457

@@ -57,7 +70,9 @@ class NumberKeyboard : ConstraintLayout {
5770
inflateView()
5871
}
5972

60-
constructor(context: Context, attrs: AttributeSet?, @AttrRes defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
73+
constructor(context: Context, attrs: AttributeSet?, @AttrRes defStyleAttr: Int) : super(
74+
context, attrs, defStyleAttr
75+
) {
6176
initializeAttributes(attrs)
6277
inflateView()
6378
}
@@ -163,11 +178,14 @@ class NumberKeyboard : ConstraintLayout {
163178
}
164179

165180
/**
166-
* Sets number keys text size.
181+
* Sets number keys text size in pixels.
167182
*/
168183
fun setNumberKeyTextSize(size: Float) {
169184
for (key in numericKeys) {
170-
key.textSize = size
185+
key.setTextSize(TypedValue.COMPLEX_UNIT_PX, size)
186+
TextViewCompat.setAutoSizeTextTypeWithDefaults(
187+
key, TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
188+
)
171189
}
172190
}
173191

@@ -209,23 +227,39 @@ class NumberKeyboard : ConstraintLayout {
209227
val type = array.getInt(R.styleable.NumberKeyboard_numberkeyboard_keyboardType, -1)
210228
if (type == -1) throw IllegalArgumentException("keyboardType attribute is required.")
211229
// Get key sizes
212-
keyWidth = array.getLayoutDimension(R.styleable.NumberKeyboard_numberkeyboard_keyWidth, DEFAULT_KEY_WIDTH_DP)
213-
keyHeight = array.getLayoutDimension(R.styleable.NumberKeyboard_numberkeyboard_keyHeight, DEFAULT_KEY_HEIGHT_DP)
230+
keyWidth = array.getLayoutDimension(
231+
R.styleable.NumberKeyboard_numberkeyboard_keyWidth,
232+
DEFAULT_KEY_WIDTH_DP,
233+
)
234+
keyHeight = array.getLayoutDimension(
235+
R.styleable.NumberKeyboard_numberkeyboard_keyHeight,
236+
DEFAULT_KEY_HEIGHT_DP,
237+
)
214238
// Get key padding
215-
keyPadding = array.getDimensionPixelSize(R.styleable.NumberKeyboard_numberkeyboard_keyPadding,
216-
dpToPx(DEFAULT_KEY_PADDING_DP.toFloat()))
239+
keyPadding = array.getDimensionPixelSize(
240+
R.styleable.NumberKeyboard_numberkeyboard_keyPadding,
241+
dpToPx(DEFAULT_KEY_PADDING_DP.toFloat()),
242+
)
217243
// Get number key background
218-
numberKeyBackground = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_numberKeyBackground,
219-
R.drawable.numberkeyboard_key_bg)
244+
numberKeyBackground = array.getResourceId(
245+
R.styleable.NumberKeyboard_numberkeyboard_numberKeyBackground,
246+
R.drawable.numberkeyboard_key_bg,
247+
)
220248
// Get number key text color
221-
numberKeyTextColor = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_numberKeyTextColor,
222-
R.drawable.numberkeyboard_key_text_color)
223-
if (array.hasValue(R.styleable.NumberKeyboard_numberkeyboard_numberKeyTypeface)) {
224-
val fontId = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_numberKeyTypeface, -1)
225-
numberKeyTypeface = ResourcesCompat.getFont(context, fontId)
226-
}
227-
numberKeyTextSize = array.getDimension(R.styleable.NumberKeyboard_numberkeyboard_numberKeyTextSize,
228-
DEFAULT_KEY_TEXT_SIZE_SP)
249+
numberKeyTextColor = array.getResourceId(
250+
R.styleable.NumberKeyboard_numberkeyboard_numberKeyTextColor,
251+
R.drawable.numberkeyboard_key_text_color,
252+
)
253+
// Get typeface
254+
numberKeyTypeface = array.getResourceId(
255+
R.styleable.NumberKeyboard_numberkeyboard_numberKeyTypeface,
256+
-1,
257+
).takeIf { it >= 0 }?.let { ResourcesCompat.getFont(context, it) }
258+
// Get text size
259+
numberKeyTextSize = array.getDimensionPixelSize(
260+
R.styleable.NumberKeyboard_numberkeyboard_numberKeyTextSize,
261+
-1,
262+
).takeIf { it >= 0 }?.toFloat()
229263
// Get auxiliary icons
230264
when (type) {
231265
0 -> { // integer
@@ -247,14 +281,22 @@ class NumberKeyboard : ConstraintLayout {
247281
rightAuxBtnBackground = R.drawable.numberkeyboard_key_bg_transparent
248282
}
249283
3 -> { // custom
250-
leftAuxBtnIcon = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_leftAuxBtnIcon,
251-
R.drawable.numberkeyboard_key_bg_transparent)
252-
rightAuxBtnIcon = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_rightAuxBtnIcon,
253-
R.drawable.numberkeyboard_key_bg_transparent)
254-
leftAuxBtnBackground = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_leftAuxBtnBackground,
255-
R.drawable.numberkeyboard_key_bg_transparent)
256-
rightAuxBtnBackground = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_rightAuxBtnBackground,
257-
R.drawable.numberkeyboard_key_bg_transparent)
284+
leftAuxBtnIcon = array.getResourceId(
285+
R.styleable.NumberKeyboard_numberkeyboard_leftAuxBtnIcon,
286+
R.drawable.numberkeyboard_key_bg_transparent
287+
)
288+
rightAuxBtnIcon = array.getResourceId(
289+
R.styleable.NumberKeyboard_numberkeyboard_rightAuxBtnIcon,
290+
R.drawable.numberkeyboard_key_bg_transparent
291+
)
292+
leftAuxBtnBackground = array.getResourceId(
293+
R.styleable.NumberKeyboard_numberkeyboard_leftAuxBtnBackground,
294+
R.drawable.numberkeyboard_key_bg_transparent
295+
)
296+
rightAuxBtnBackground = array.getResourceId(
297+
R.styleable.NumberKeyboard_numberkeyboard_rightAuxBtnBackground,
298+
R.drawable.numberkeyboard_key_bg_transparent
299+
)
258300
}
259301
else -> {
260302
leftAuxBtnIcon = R.drawable.numberkeyboard_key_bg_transparent
@@ -303,11 +345,8 @@ class NumberKeyboard : ConstraintLayout {
303345
setKeyPadding(keyPadding)
304346
setNumberKeyBackground(numberKeyBackground)
305347
setNumberKeyTextColor(numberKeyTextColor)
306-
val typeface = numberKeyTypeface
307-
if (typeface != null) {
308-
setNumberKeyTypeface(typeface)
309-
}
310-
setNumberKeyTextSize(numberKeyTextSize)
348+
numberKeyTypeface?.let { setNumberKeyTypeface(it) }
349+
numberKeyTextSize?.let { setNumberKeyTextSize(it) }
311350
setLeftAuxButtonIcon(leftAuxBtnIcon)
312351
setLeftAuxButtonBackground(leftAuxBtnBackground)
313352
setRightAuxButtonIcon(rightAuxBtnIcon)
@@ -338,15 +377,16 @@ class NumberKeyboard : ConstraintLayout {
338377
* Utility method to convert dp to pixels.
339378
*/
340379
fun dpToPx(valueInDp: Float): Int {
341-
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, valueInDp, resources.displayMetrics).toInt()
380+
return TypedValue.applyDimension(
381+
TypedValue.COMPLEX_UNIT_DIP, valueInDp, resources.displayMetrics
382+
).toInt()
342383
}
343384

344385
companion object {
345386

346387
private const val DEFAULT_KEY_WIDTH_DP = -1 // match_parent
347388
private const val DEFAULT_KEY_HEIGHT_DP = -1 // match_parent
348389
private const val DEFAULT_KEY_PADDING_DP = 16
349-
private const val DEFAULT_KEY_TEXT_SIZE_SP = 18.0F
350390

351391
init {
352392
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)

sample/src/main/res/layout/activity_keyboard_custom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
keyboard:numberkeyboard_leftAuxBtnBackground="@drawable/key_bg_square"
3131
keyboard:numberkeyboard_leftAuxBtnIcon="@drawable/ic_android"
3232
keyboard:numberkeyboard_numberKeyTextColor="@drawable/key_text_blue"
33+
keyboard:numberkeyboard_numberKeyTextSize="10sp"
3334
keyboard:numberkeyboard_rightAuxBtnIcon="@drawable/numberkeyboard_ic_backspace" />
3435

3536
</LinearLayout>

0 commit comments

Comments
 (0)