Skip to content

Commit 36a355e

Browse files
committed
Library:
Fix crash when unsetting key background (by setting it to 0). Allow setting the layout for the keyboard view itself in xml as attribute "layout". Add getters for keyboard and popupwindow instances to NumberKeyboardPopup Sample: Update sample to include AOSP style keyboard via "layout" attribute.
1 parent 68c00d7 commit 36a355e

File tree

6 files changed

+290
-2
lines changed

6 files changed

+290
-2
lines changed

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,12 +265,20 @@ public void setKeyPadding(int px) {
265265
*/
266266
public void setNumberKeyBackground(@DrawableRes int background) {
267267
for (TextView key : numericKeys) {
268-
key.setBackground(ContextCompat.getDrawable(getContext(), background));
268+
if (background == 0) {
269+
key.setBackgroundResource(0);
270+
} else {
271+
key.setBackground(ContextCompat.getDrawable(getContext(), background));
272+
}
269273
}
270274
if (modifierKeys != null) {
271275
for (View modifierKey : modifierKeys) {
272276
if (modifierKey instanceof TextView) {
273-
modifierKey.setBackground(ContextCompat.getDrawable(getContext(), background));
277+
if (background == 0) {
278+
modifierKey.setBackgroundResource(0);
279+
} else {
280+
modifierKey.setBackground(ContextCompat.getDrawable(getContext(), background));
281+
}
274282
}
275283
}
276284
}
@@ -413,6 +421,8 @@ private void initializeAttributes(AttributeSet attrs) {
413421
leftAuxBtnBackground = R.drawable.key_bg;
414422
rightAuxBtnBackground = R.drawable.key_bg;
415423
}
424+
// Get layout ID
425+
layoutId = array.getResourceId(R.styleable.NumberKeyboard_layout, layoutId);
416426
} finally {
417427
array.recycle();
418428
}

lib/src/main/java/com/davidmiguel/numberkeyboard/NumberKeyboardPopup.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,11 @@ public PopupWindow getPopupWindow() {
166166
return popupWindow;
167167
}
168168

169+
@NonNull
170+
public NumberKeyboard getKeyboard() {
171+
return keyboard;
172+
}
173+
169174
private Runnable delayHidePopupRunnable = new Runnable() {
170175

171176
@Override

lib/src/main/res/values/attrs.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<attr name="leftAuxBtnBackground" format="reference"/>
2929
<attr name="rightAuxBtnIcon" format="reference"/>
3030
<attr name="rightAuxBtnBackground" format="reference"/>
31+
<attr name="layout" format="reference"/>
3132
</declare-styleable>
3233

3334
</resources>

sample/src/main/java/com/davidmiguel/sample/KeyboardEditTextPopupActivity.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import android.widget.EditText;
1313
import android.widget.TextView;
1414

15+
import com.davidmiguel.numberkeyboard.NumberKeyboard;
1516
import com.davidmiguel.numberkeyboard.NumberKeyboardPopup;
1617

1718
import java.text.DecimalFormat;
@@ -82,6 +83,10 @@ protected void onCreate(Bundle savedInstanceState) {
8283

8384
popup = new NumberKeyboardPopup.Builder(findViewById(R.id.main_view)).setEditTextListener().setKeyboardLayout(R.layout.popup_keyboard).build(amountEditText);
8485

86+
final NumberKeyboard keyboard = popup.getKeyboard();
87+
keyboard.setNumberKeyBackground(0);
88+
keyboard.setKeyPadding(0);
89+
8590
amountEditText.setOnClickListener(new View.OnClickListener() {
8691
@Override
8792
public void onClick(View v) {
Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,266 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<merge
4+
xmlns:android="http://schemas.android.com/apk/res/android"
5+
xmlns:app="http://schemas.android.com/apk/res-auto"
6+
android:layout_width="match_parent"
7+
android:layout_height="match_parent">
8+
9+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
10+
android:id="@+id/key1Container"
11+
style="@style/keyContainer"
12+
app:layout_constraintBottom_toTopOf="@+id/key4Container"
13+
app:layout_constraintEnd_toStartOf="@+id/key2Container"
14+
app:layout_constraintStart_toStartOf="parent"
15+
app:layout_constraintTop_toTopOf="parent">
16+
17+
<TextView
18+
android:id="@+id/key1"
19+
style="@style/keyNoBg"
20+
android:padding="0dp"
21+
android:text="@string/one"/>
22+
23+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
24+
25+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
26+
android:id="@+id/key2Container"
27+
style="@style/keyContainer"
28+
app:layout_constraintBottom_toTopOf="@+id/key5Container"
29+
app:layout_constraintEnd_toStartOf="@+id/key3Container"
30+
app:layout_constraintStart_toEndOf="@+id/key1Container"
31+
app:layout_constraintTop_toTopOf="parent">
32+
33+
<TextView
34+
android:id="@+id/key2"
35+
style="@style/keyNoBg"
36+
android:padding="0dp"
37+
android:text="@string/two"/>
38+
39+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
40+
41+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
42+
android:id="@+id/key3Container"
43+
style="@style/keyContainer"
44+
app:layout_constraintBottom_toTopOf="@+id/key6Container"
45+
app:layout_constraintEnd_toStartOf="@+id/modifier1Container"
46+
app:layout_constraintStart_toEndOf="@+id/key2Container"
47+
app:layout_constraintTop_toTopOf="parent">
48+
49+
<TextView
50+
android:id="@+id/key3"
51+
style="@style/keyNoBg"
52+
android:padding="0dp"
53+
android:text="@string/three"/>
54+
55+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
56+
57+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
58+
android:id="@+id/modifier1Container"
59+
style="@style/keyContainer"
60+
app:layout_constraintBottom_toTopOf="@+id/key6Container"
61+
app:layout_constraintEnd_toEndOf="parent"
62+
app:layout_constraintStart_toEndOf="@+id/key3Container"
63+
app:layout_constraintTop_toTopOf="parent">
64+
65+
<TextView
66+
android:id="@+id/keyModifier1"
67+
style="@style/keyNoBg"
68+
android:padding="0dp"
69+
android:text="@string/minus"/>
70+
71+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
72+
73+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
74+
android:id="@+id/key4Container"
75+
style="@style/keyContainer"
76+
app:layout_constraintBottom_toTopOf="@+id/key7Container"
77+
app:layout_constraintEnd_toStartOf="@+id/key5Container"
78+
app:layout_constraintStart_toStartOf="parent"
79+
app:layout_constraintTop_toBottomOf="@+id/key1Container">
80+
81+
<TextView
82+
android:id="@+id/key4"
83+
style="@style/keyNoBg"
84+
android:padding="0dp"
85+
android:text="@string/four"/>
86+
87+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
88+
89+
90+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
91+
android:id="@+id/key5Container"
92+
style="@style/keyContainer"
93+
app:layout_constraintBottom_toTopOf="@+id/key8Container"
94+
app:layout_constraintEnd_toStartOf="@+id/key6Container"
95+
app:layout_constraintStart_toEndOf="@+id/key4Container"
96+
app:layout_constraintTop_toBottomOf="@+id/key2Container">
97+
98+
<TextView
99+
android:id="@+id/key5"
100+
style="@style/keyNoBg"
101+
android:padding="0dp"
102+
android:text="@string/five"/>
103+
104+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
105+
106+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
107+
android:id="@+id/key6Container"
108+
style="@style/keyContainer"
109+
app:layout_constraintBottom_toTopOf="@+id/key9Container"
110+
app:layout_constraintEnd_toStartOf="@+id/modifier2Container"
111+
app:layout_constraintStart_toEndOf="@+id/key5Container"
112+
app:layout_constraintTop_toBottomOf="@+id/key3Container">
113+
114+
<TextView
115+
android:id="@+id/key6"
116+
style="@style/keyNoBg"
117+
android:padding="0dp"
118+
android:text="@string/six"/>
119+
120+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
121+
122+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
123+
android:id="@+id/modifier2Container"
124+
style="@style/keyContainer"
125+
app:layout_constraintBottom_toTopOf="@+id/key9Container"
126+
app:layout_constraintEnd_toEndOf="parent"
127+
app:layout_constraintStart_toEndOf="@+id/key6Container"
128+
app:layout_constraintTop_toBottomOf="@+id/key3Container">
129+
130+
<TextView
131+
android:id="@+id/keyModifier2"
132+
style="@style/keyNoBg"
133+
android:padding="0dp"
134+
android:text="@string/comma"/>
135+
136+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
137+
138+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
139+
android:id="@+id/key7Container"
140+
style="@style/keyContainer"
141+
app:layout_constraintBottom_toTopOf="@+id/leftAuxBtnContainer"
142+
app:layout_constraintEnd_toStartOf="@+id/key8Container"
143+
app:layout_constraintStart_toStartOf="parent"
144+
app:layout_constraintTop_toBottomOf="@+id/key4Container">
145+
146+
<TextView
147+
android:id="@+id/key7"
148+
style="@style/keyNoBg"
149+
android:padding="0dp"
150+
android:text="@string/seven"/>
151+
152+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
153+
154+
155+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
156+
android:id="@+id/key8Container"
157+
style="@style/keyContainer"
158+
app:layout_constraintBottom_toTopOf="@+id/key0Container"
159+
app:layout_constraintEnd_toStartOf="@+id/key9Container"
160+
app:layout_constraintStart_toEndOf="@+id/key7Container"
161+
app:layout_constraintTop_toBottomOf="@+id/key5Container">
162+
163+
<TextView
164+
android:id="@+id/key8"
165+
style="@style/keyNoBg"
166+
android:padding="0dp"
167+
android:text="@string/eight"/>
168+
169+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
170+
171+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
172+
android:id="@+id/key9Container"
173+
style="@style/keyContainer"
174+
app:layout_constraintBottom_toTopOf="@+id/rightAuxBtnContainer"
175+
app:layout_constraintEnd_toStartOf="@+id/modifier3Container"
176+
app:layout_constraintStart_toEndOf="@+id/key8Container"
177+
app:layout_constraintTop_toBottomOf="@+id/key6Container">
178+
179+
<TextView
180+
android:id="@+id/key9"
181+
style="@style/keyNoBg"
182+
android:padding="0dp"
183+
android:text="@string/nine"/>
184+
185+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
186+
187+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
188+
android:id="@+id/modifier3Container"
189+
style="@style/keyContainer"
190+
app:layout_constraintBottom_toTopOf="@+id/rightAuxBtnContainer"
191+
app:layout_constraintEnd_toEndOf="parent"
192+
app:layout_constraintStart_toEndOf="@+id/key9Container"
193+
app:layout_constraintTop_toBottomOf="@+id/key6Container">
194+
195+
<ImageView
196+
android:id="@+id/buttonModifier3"
197+
style="@style/keyNoBg"
198+
android:scaleType="center"
199+
app:srcCompat="@drawable/ic_backspace"/>
200+
201+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
202+
203+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
204+
android:id="@+id/leftAuxBtnContainer"
205+
style="@style/keyContainer"
206+
app:layout_constraintBottom_toBottomOf="parent"
207+
app:layout_constraintEnd_toStartOf="@+id/key0Container"
208+
app:layout_constraintStart_toStartOf="parent"
209+
app:layout_constraintTop_toBottomOf="@+id/key7Container">
210+
211+
<ImageView
212+
android:id="@+id/leftAuxBtn"
213+
style="@style/keyNoBg"
214+
android:scaleType="center"
215+
app:srcCompat="@drawable/ic_fingerprint"/>
216+
217+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
218+
219+
220+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
221+
android:id="@+id/key0Container"
222+
style="@style/keyContainer"
223+
app:layout_constraintBottom_toBottomOf="parent"
224+
app:layout_constraintEnd_toStartOf="@+id/rightAuxBtnContainer"
225+
app:layout_constraintStart_toEndOf="@+id/leftAuxBtnContainer"
226+
app:layout_constraintTop_toBottomOf="@+id/key8Container">
227+
228+
<TextView
229+
android:id="@+id/key0"
230+
style="@style/keyNoBg"
231+
android:text="@string/zero"/>
232+
233+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
234+
235+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
236+
android:id="@+id/rightAuxBtnContainer"
237+
style="@style/keyContainer"
238+
app:layout_constraintBottom_toBottomOf="parent"
239+
app:layout_constraintEnd_toStartOf="@+id/modifier4Container"
240+
app:layout_constraintStart_toEndOf="@+id/key0Container"
241+
app:layout_constraintTop_toBottomOf="@+id/key9Container">
242+
243+
<ImageView
244+
android:id="@+id/rightAuxBtn"
245+
style="@style/keyNoBg"
246+
android:scaleType="center"
247+
app:srcCompat="@drawable/ic_backspace"/>
248+
249+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
250+
251+
<com.davidmiguel.numberkeyboard.SquareFrameLayout
252+
android:id="@+id/modifier4Container"
253+
style="@style/keyContainer"
254+
app:layout_constraintBottom_toBottomOf="parent"
255+
app:layout_constraintEnd_toEndOf="parent"
256+
app:layout_constraintStart_toEndOf="@+id/rightAuxBtnContainer"
257+
app:layout_constraintTop_toBottomOf="@+id/key9Container">
258+
259+
<ImageView
260+
android:id="@+id/buttonModifier4"
261+
style="@style/keyNoBg"
262+
android:scaleType="center"
263+
app:srcCompat="@drawable/ic_check_circle"/>
264+
265+
</com.davidmiguel.numberkeyboard.SquareFrameLayout>
266+
</merge>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<com.davidmiguel.numberkeyboard.NumberKeyboard xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:keyboard="http://schemas.android.com/apk/res-auto"
44
android:background="@android:color/white"
5+
keyboard:layout="@layout/number_keyboard_4rows_aosp"
56
android:layout_width="match_parent" android:layout_height="match_parent"
67
keyboard:keyboardType="four_columns"
78
/>

0 commit comments

Comments
 (0)