88import android .support .annotation .NonNull ;
99import android .util .AttributeSet ;
1010import android .view .View ;
11- import android .view .ViewGroup ;
12- import android .widget .LinearLayout ;
1311
1412import com .beardedhen .androidbootstrap .api .attributes .BootstrapBrand ;
1513import com .beardedhen .androidbootstrap .api .attributes .ViewGroupPosition ;
3937 * to set the properties of all children with one method call to this view. Options include
4038 * BootstrapBrand colors, roundable corners, 'outlineable' mode and different selection modes
4139 * 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.
4241 */
43- public class BootstrapButtonGroup extends LinearLayout implements BootstrapSizeView ,
42+ public class BootstrapButtonGroup extends BootstrapGroup implements BootstrapSizeView ,
4443 OutlineableView , RoundableView , BootstrapBrandView , ButtonModeView {
4544
4645 private static final String TAG = "com.beardedhen.androidbootstrap.BootstrapButtonGroup" ;
@@ -70,7 +69,7 @@ public BootstrapButtonGroup(Context context, AttributeSet attrs, int defStyleAtt
7069 initialise (attrs );
7170 }
7271
73- private void initialise (AttributeSet attrs ) {
72+ protected void initialise (AttributeSet attrs ) {
7473 TypedArray a = getContext ().obtainStyledAttributes (attrs , R .styleable .BootstrapButtonGroup );
7574
7675 try {
@@ -89,7 +88,7 @@ private void initialise(AttributeSet attrs) {
8988 finally {
9089 a .recycle ();
9190 }
92- updateBootstrapPositions ();
91+ updateBootstrapGroup ();
9392 }
9493
9594 @ Override public Parcelable onSaveInstanceState () {
@@ -125,10 +124,20 @@ private void initialise(AttributeSet attrs) {
125124 state = bundle .getParcelable (TAG );
126125 }
127126 super .onRestoreInstanceState (state );
128- updateBootstrapPositions ();
127+ updateBootstrapGroup ();
129128 }
130129
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 () {
132141 int childCount = getChildCount ();
133142 int orientation = getOrientation ();
134143
@@ -284,100 +293,4 @@ public void setButtonMode(@NonNull ButtonMode buttonMode) {
284293 return rounded ;
285294 }
286295
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-
383296}
0 commit comments