Skip to content

Commit

Permalink
Fix key text size
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmigloz committed Dec 13, 2022
1 parent 674615f commit 168bfe4
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 37 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Change Log

## Version 3.1.0 *(13/12/2022)*

- Add text size attribute (thanks @gerynugrh)
- Add typeface attribute (thanks @gerynugrh)
- Add KeyboardCustomSquareActivity to show custom square design (thanks @delacrixmorgan)
- Update dependencies

## Version 3.0.0 *(30/12/2018)*

- Migrate to Kotlin #21
Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Add the dependency:

```gradle
dependencies {
compile 'com.github.davidmigloz:number-keyboard:3.0.0'
compile 'com.github.davidmigloz:number-keyboard:3.1.0'
}
```

Expand Down Expand Up @@ -56,7 +56,9 @@ Use `NumberKeyboard` view in your layout:
- `keyboard:numberkeyboard_keyPadding="[dimension]"` (default: `16dp`): key padding.
- `keyboard:numberkeyboard_numberKeyBackground="[reference]"` (default: circle): number keys background drawable.
- `keyboard:numberkeyboard_numberKeyTextColor="[reference]"` (default: dark blue): number keys text color.
- `keyboard:numberkeyboard_leftAuxBtnIcon="[reference]"` (default: none): if `keyboardType="custom"`, icon shown in left auxiliary button.
- `keyboard:numberkeyboard_numberKeyTypeface="[reference]"` (default: dark blue): number keys text color.
- `keyboard:numberkeyboard_numberKeyTypeface="[reference]"` (default: none): number keys text typeface.
- `keyboard:numberkeyboard_numberKeyTextSize="[dimension]"` (default: none): number keys text size (if it is not set, the text auto scales to fit the key).
- `keyboard:numberkeyboard_leftAuxBtnBackground="[reference]"` (default: none): if `keyboardType="custom"`, left auxiliary button background.
- `keyboard:numberkeyboard_rightAuxBtnIcon="[reference]"` (default: none): if `keyboardType="custom"`, icon shown in right auxiliary button.
- `keyboard:numberkeyboard_rightAuxBtnBackground="[reference]"` (default: none): if `keyboardType="custom"`, right auxiliary button background.
Expand All @@ -73,6 +75,7 @@ Use `NumberKeyboard` view in your layout:
- `setNumberKeyBackground()`: sets number keys background.
- `setNumberKeyTextColor()`: sets number keys text color.
- `setNumberKeyTypeface()`: sets number keys text typeface.
- `setNumberKeyTextSize()`: sets number keys text size in pixels.
- `setLeftAuxButtonIcon()`: sets left auxiliary button icon.
- `setRightAuxButtonIcon()`: sets right auxiliary button icon.
- `setLeftAuxButtonBackground()`: sets left auxiliary button background.
Expand Down
2 changes: 1 addition & 1 deletion lib/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

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

Expand Down
108 changes: 74 additions & 34 deletions lib/src/main/java/com/davidmiguel/numberkeyboard/NumberKeyboard.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,15 @@ import android.util.TypedValue
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.*
import androidx.annotation.AttrRes
import androidx.annotation.ColorRes
import androidx.annotation.Dimension
import androidx.annotation.DrawableRes
import androidx.appcompat.app.AppCompatDelegate
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.core.widget.TextViewCompat
import java.util.*

/**
Expand All @@ -22,23 +26,32 @@ class NumberKeyboard : ConstraintLayout {

@Dimension
private var keyWidth: Int = 0

@Dimension
private var keyHeight: Int = 0

@Dimension
private var keyPadding: Int = 0

@DrawableRes
private var numberKeyBackground: Int = 0

@ColorRes
private var numberKeyTextColor: Int = 0
private var numberKeyTypeface: Typeface? = null

@Dimension
private var numberKeyTextSize: Float = 0.0F
private var numberKeyTextSize: Float? = null

@DrawableRes
private var leftAuxBtnIcon: Int = 0

@DrawableRes
private var leftAuxBtnBackground: Int = 0

@DrawableRes
private var rightAuxBtnIcon: Int = 0

@DrawableRes
private var rightAuxBtnBackground: Int = 0

Expand All @@ -57,7 +70,9 @@ class NumberKeyboard : ConstraintLayout {
inflateView()
}

constructor(context: Context, attrs: AttributeSet?, @AttrRes defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
constructor(context: Context, attrs: AttributeSet?, @AttrRes defStyleAttr: Int) : super(
context, attrs, defStyleAttr
) {
initializeAttributes(attrs)
inflateView()
}
Expand Down Expand Up @@ -163,11 +178,14 @@ class NumberKeyboard : ConstraintLayout {
}

/**
* Sets number keys text size.
* Sets number keys text size in pixels.
*/
fun setNumberKeyTextSize(size: Float) {
for (key in numericKeys) {
key.textSize = size
key.setTextSize(TypedValue.COMPLEX_UNIT_PX, size)
TextViewCompat.setAutoSizeTextTypeWithDefaults(
key, TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
)
}
}

Expand Down Expand Up @@ -209,23 +227,39 @@ class NumberKeyboard : ConstraintLayout {
val type = array.getInt(R.styleable.NumberKeyboard_numberkeyboard_keyboardType, -1)
if (type == -1) throw IllegalArgumentException("keyboardType attribute is required.")
// Get key sizes
keyWidth = array.getLayoutDimension(R.styleable.NumberKeyboard_numberkeyboard_keyWidth, DEFAULT_KEY_WIDTH_DP)
keyHeight = array.getLayoutDimension(R.styleable.NumberKeyboard_numberkeyboard_keyHeight, DEFAULT_KEY_HEIGHT_DP)
keyWidth = array.getLayoutDimension(
R.styleable.NumberKeyboard_numberkeyboard_keyWidth,
DEFAULT_KEY_WIDTH_DP,
)
keyHeight = array.getLayoutDimension(
R.styleable.NumberKeyboard_numberkeyboard_keyHeight,
DEFAULT_KEY_HEIGHT_DP,
)
// Get key padding
keyPadding = array.getDimensionPixelSize(R.styleable.NumberKeyboard_numberkeyboard_keyPadding,
dpToPx(DEFAULT_KEY_PADDING_DP.toFloat()))
keyPadding = array.getDimensionPixelSize(
R.styleable.NumberKeyboard_numberkeyboard_keyPadding,
dpToPx(DEFAULT_KEY_PADDING_DP.toFloat()),
)
// Get number key background
numberKeyBackground = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_numberKeyBackground,
R.drawable.numberkeyboard_key_bg)
numberKeyBackground = array.getResourceId(
R.styleable.NumberKeyboard_numberkeyboard_numberKeyBackground,
R.drawable.numberkeyboard_key_bg,
)
// Get number key text color
numberKeyTextColor = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_numberKeyTextColor,
R.drawable.numberkeyboard_key_text_color)
if (array.hasValue(R.styleable.NumberKeyboard_numberkeyboard_numberKeyTypeface)) {
val fontId = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_numberKeyTypeface, -1)
numberKeyTypeface = ResourcesCompat.getFont(context, fontId)
}
numberKeyTextSize = array.getDimension(R.styleable.NumberKeyboard_numberkeyboard_numberKeyTextSize,
DEFAULT_KEY_TEXT_SIZE_SP)
numberKeyTextColor = array.getResourceId(
R.styleable.NumberKeyboard_numberkeyboard_numberKeyTextColor,
R.drawable.numberkeyboard_key_text_color,
)
// Get typeface
numberKeyTypeface = array.getResourceId(
R.styleable.NumberKeyboard_numberkeyboard_numberKeyTypeface,
-1,
).takeIf { it >= 0 }?.let { ResourcesCompat.getFont(context, it) }
// Get text size
numberKeyTextSize = array.getDimensionPixelSize(
R.styleable.NumberKeyboard_numberkeyboard_numberKeyTextSize,
-1,
).takeIf { it >= 0 }?.toFloat()
// Get auxiliary icons
when (type) {
0 -> { // integer
Expand All @@ -247,14 +281,22 @@ class NumberKeyboard : ConstraintLayout {
rightAuxBtnBackground = R.drawable.numberkeyboard_key_bg_transparent
}
3 -> { // custom
leftAuxBtnIcon = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_leftAuxBtnIcon,
R.drawable.numberkeyboard_key_bg_transparent)
rightAuxBtnIcon = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_rightAuxBtnIcon,
R.drawable.numberkeyboard_key_bg_transparent)
leftAuxBtnBackground = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_leftAuxBtnBackground,
R.drawable.numberkeyboard_key_bg_transparent)
rightAuxBtnBackground = array.getResourceId(R.styleable.NumberKeyboard_numberkeyboard_rightAuxBtnBackground,
R.drawable.numberkeyboard_key_bg_transparent)
leftAuxBtnIcon = array.getResourceId(
R.styleable.NumberKeyboard_numberkeyboard_leftAuxBtnIcon,
R.drawable.numberkeyboard_key_bg_transparent
)
rightAuxBtnIcon = array.getResourceId(
R.styleable.NumberKeyboard_numberkeyboard_rightAuxBtnIcon,
R.drawable.numberkeyboard_key_bg_transparent
)
leftAuxBtnBackground = array.getResourceId(
R.styleable.NumberKeyboard_numberkeyboard_leftAuxBtnBackground,
R.drawable.numberkeyboard_key_bg_transparent
)
rightAuxBtnBackground = array.getResourceId(
R.styleable.NumberKeyboard_numberkeyboard_rightAuxBtnBackground,
R.drawable.numberkeyboard_key_bg_transparent
)
}
else -> {
leftAuxBtnIcon = R.drawable.numberkeyboard_key_bg_transparent
Expand Down Expand Up @@ -303,11 +345,8 @@ class NumberKeyboard : ConstraintLayout {
setKeyPadding(keyPadding)
setNumberKeyBackground(numberKeyBackground)
setNumberKeyTextColor(numberKeyTextColor)
val typeface = numberKeyTypeface
if (typeface != null) {
setNumberKeyTypeface(typeface)
}
setNumberKeyTextSize(numberKeyTextSize)
numberKeyTypeface?.let { setNumberKeyTypeface(it) }
numberKeyTextSize?.let { setNumberKeyTextSize(it) }
setLeftAuxButtonIcon(leftAuxBtnIcon)
setLeftAuxButtonBackground(leftAuxBtnBackground)
setRightAuxButtonIcon(rightAuxBtnIcon)
Expand Down Expand Up @@ -338,15 +377,16 @@ class NumberKeyboard : ConstraintLayout {
* Utility method to convert dp to pixels.
*/
fun dpToPx(valueInDp: Float): Int {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, valueInDp, resources.displayMetrics).toInt()
return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, valueInDp, resources.displayMetrics
).toInt()
}

companion object {

private const val DEFAULT_KEY_WIDTH_DP = -1 // match_parent
private const val DEFAULT_KEY_HEIGHT_DP = -1 // match_parent
private const val DEFAULT_KEY_PADDING_DP = 16
private const val DEFAULT_KEY_TEXT_SIZE_SP = 18.0F

init {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
Expand Down
1 change: 1 addition & 0 deletions sample/src/main/res/layout/activity_keyboard_custom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
keyboard:numberkeyboard_leftAuxBtnBackground="@drawable/key_bg_square"
keyboard:numberkeyboard_leftAuxBtnIcon="@drawable/ic_android"
keyboard:numberkeyboard_numberKeyTextColor="@drawable/key_text_blue"
keyboard:numberkeyboard_numberKeyTextSize="10sp"
keyboard:numberkeyboard_rightAuxBtnIcon="@drawable/numberkeyboard_ic_backspace" />

</LinearLayout>

0 comments on commit 168bfe4

Please sign in to comment.