2017-05-15 9 views
-2

I Gebrauchsklasse RadioButtonCenter beiRadiogroup nicht korrekt angezeigt werden

https://github.com/pizza/MaterialTabs/blob/master/sample/src/io/karim/materialtabs/sample/ui/RadioButtonCenter.java

Es funktionierte gut in unter API 24. Aber in API 24: Es ist nicht korrekt angezeigt haben.

wenn ich Tab neu klicke. Tab alt immer aktiv. Wenn ich zum Aktivitätsunterschied und zurück will. Es wird korrekt angezeigt.

Ich habe das Problem nicht gefunden. Bitte. Hilf mir!

Dies ist xml

<RadioGroup 
    android:id="@+id/bottom_navigation_on_main" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/item_height" 
    android:layout_alignParentBottom="true" 
    android:orientation="horizontal" 
    android:weightSum="4"> 

    <RadioButtonCenter 
     android:id="@+id/tab_home" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:background="@drawable/selector_tab_main" 
     android:button="@null" 
     android:clickable="true" 
     android:gravity="center" 
     app:radioDrawable="@drawable/selector_tab_home" /> 

    <RadioButtonCenter 
     android:id="@+id/tab_search" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:button="@null" 
     android:clickable="true" 
     android:background="@drawable/selector_tab_main" 
     android:gravity="center" 
     app:radioDrawable="@drawable/selector_tab_search" /> 
    </RadioGroup> 

Dieser Selektor

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/ic_home_on" android:state_checked="true" 
/> 
<item android:drawable="@drawable/ic_home_on" android:state_activated="true" 
/> 
<item android:drawable="@drawable/ic_home_off" /> 
</selector> 
+0

Sie Frage ist nicht klar und prägnant fügen Sie bitte weitere Details und erarbeiten und teilen, was Sie versucht haben. –

+0

Ich aktualisiere meine Frage –

Antwort

0

ich das Problem gefunden wird. Ich füge requestLayout() hinzu; und jetzt hat es funktioniert!

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    if (buttonDrawable != null) { 
     if (Build.VERSION.SDK_INT >= 24){ 
      requestLayout(); 
     } 
     buttonDrawable.setState(getDrawableState()); 
     final int verticalGravity = getGravity() & Gravity.VERTICAL_GRAVITY_MASK; 
     final int height = buttonDrawable.getIntrinsicHeight(); 

     int y = 0; 

     switch (verticalGravity) { 
      case Gravity.BOTTOM: 
       y = getHeight() - height; 
       break; 
      case Gravity.CENTER_VERTICAL: 
       y = (getHeight() - height)/2; 
       break; 
     } 

     int buttonWidth = buttonDrawable.getIntrinsicWidth(); 
     int buttonLeft = (getWidth() - buttonWidth)/2; 
     buttonDrawable.setBounds(buttonLeft, y, buttonLeft + buttonWidth, y + height); 
     buttonDrawable.draw(canvas); 
    } 
}