8
8
import android .support .annotation .NonNull ;
9
9
import android .util .AttributeSet ;
10
10
import android .view .View ;
11
- import android .view .ViewGroup ;
12
- import android .widget .LinearLayout ;
13
11
14
12
import com .beardedhen .androidbootstrap .api .attributes .BootstrapBrand ;
15
13
import com .beardedhen .androidbootstrap .api .attributes .ViewGroupPosition ;
39
37
* to set the properties of all children with one method call to this view. Options include
40
38
* BootstrapBrand colors, roundable corners, 'outlineable' mode and different selection modes
41
39
* e.g. Checkbox/Radio group.
40
+ * If button mode is set to radio only one button is a button group may be selected at a time.
42
41
*/
43
- public class BootstrapButtonGroup extends LinearLayout implements BootstrapSizeView ,
42
+ public class BootstrapButtonGroup extends BootstrapGroup implements BootstrapSizeView ,
44
43
OutlineableView , RoundableView , BootstrapBrandView , ButtonModeView {
45
44
46
45
private static final String TAG = "com.beardedhen.androidbootstrap.BootstrapButtonGroup" ;
@@ -70,7 +69,7 @@ public BootstrapButtonGroup(Context context, AttributeSet attrs, int defStyleAtt
70
69
initialise (attrs );
71
70
}
72
71
73
- private void initialise (AttributeSet attrs ) {
72
+ protected void initialise (AttributeSet attrs ) {
74
73
TypedArray a = getContext ().obtainStyledAttributes (attrs , R .styleable .BootstrapButtonGroup );
75
74
76
75
try {
@@ -89,7 +88,7 @@ private void initialise(AttributeSet attrs) {
89
88
finally {
90
89
a .recycle ();
91
90
}
92
- updateBootstrapPositions ();
91
+ updateBootstrapGroup ();
93
92
}
94
93
95
94
@ Override public Parcelable onSaveInstanceState () {
@@ -125,10 +124,20 @@ private void initialise(AttributeSet attrs) {
125
124
state = bundle .getParcelable (TAG );
126
125
}
127
126
super .onRestoreInstanceState (state );
128
- updateBootstrapPositions ();
127
+ updateBootstrapGroup ();
129
128
}
130
129
131
- private void updateBootstrapPositions () {
130
+ @ Override
131
+ protected void onBootstrapViewAdded () {
132
+ updateBootstrapGroup ();
133
+ }
134
+
135
+ @ Override
136
+ protected void onBootstrapViewRemoved () {
137
+ updateBootstrapGroup ();
138
+ }
139
+
140
+ protected void updateBootstrapGroup () {
132
141
int childCount = getChildCount ();
133
142
int orientation = getOrientation ();
134
143
@@ -284,100 +293,4 @@ public void setButtonMode(@NonNull ButtonMode buttonMode) {
284
293
return rounded ;
285
294
}
286
295
287
- /*
288
- * Overrides
289
- */
290
-
291
-
292
- @ Override public void setOrientation (int orientation ) {
293
- super .setOrientation (orientation );
294
- updateBootstrapPositions ();
295
- }
296
-
297
- @ Override public void addView (@ NonNull View child ) {
298
- super .addView (child );
299
- updateBootstrapPositions ();
300
- }
301
-
302
- @ Override public void addView (@ NonNull View child , int index ) {
303
- super .addView (child , index );
304
- updateBootstrapPositions ();
305
- }
306
-
307
- @ Override public void addView (@ NonNull View child , int index , ViewGroup .LayoutParams params ) {
308
- super .addView (child , index , params );
309
- updateBootstrapPositions ();
310
- }
311
-
312
- @ Override public void addView (@ NonNull View child , ViewGroup .LayoutParams params ) {
313
- super .addView (child , params );
314
- updateBootstrapPositions ();
315
- }
316
-
317
- @ Override public void addView (@ NonNull View child , int width , int height ) {
318
- super .addView (child , width , height );
319
- updateBootstrapPositions ();
320
- }
321
-
322
- @ Override
323
- protected boolean addViewInLayout (
324
- @ NonNull View child , int index , ViewGroup .LayoutParams params ) {
325
- boolean b = super .addViewInLayout (child , index , params );
326
- updateBootstrapPositions ();
327
- return b ;
328
- }
329
-
330
- @ Override
331
- protected boolean addViewInLayout (@ NonNull
332
- View child , int index , ViewGroup .LayoutParams params , boolean preventRequestLayout ) {
333
- boolean b = super .addViewInLayout (child , index , params , preventRequestLayout );
334
- updateBootstrapPositions ();
335
- return b ;
336
- }
337
-
338
- @ Override public void removeView (@ NonNull View view ) {
339
- super .removeView (view );
340
- updateBootstrapPositions ();
341
- }
342
-
343
- @ Override protected void removeDetachedView (@ NonNull View child , boolean animate ) {
344
- super .removeDetachedView (child , animate );
345
- updateBootstrapPositions ();
346
- }
347
-
348
- @ Override public void removeAllViews () {
349
- super .removeAllViews ();
350
- updateBootstrapPositions ();
351
- }
352
-
353
- @ Override public void removeAllViewsInLayout () {
354
- super .removeAllViewsInLayout ();
355
- updateBootstrapPositions ();
356
- }
357
-
358
- @ Override public void removeViewAt (int index ) {
359
- super .removeViewAt (index );
360
- updateBootstrapPositions ();
361
- }
362
-
363
- @ Override public void removeViewInLayout (@ NonNull View view ) {
364
- super .removeViewInLayout (view );
365
- updateBootstrapPositions ();
366
- }
367
-
368
- @ Override public void removeViews (int start , int count ) {
369
- super .removeViews (start , count );
370
- updateBootstrapPositions ();
371
- }
372
-
373
- @ Override public void removeViewsInLayout (int start , int count ) {
374
- super .removeViewsInLayout (start , count );
375
- updateBootstrapPositions ();
376
- }
377
-
378
- @ Override protected void onFinishInflate () {
379
- super .onFinishInflate ();
380
- updateBootstrapPositions ();
381
- }
382
-
383
296
}
0 commit comments