2017-05-15 65 views
-2

我在RadioGroup中沒有顯示正確的

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

它在下面API 24.但是,在API 24的工作很好地利用類RadioButtonCenter,它不會顯示正確。

當我點擊標籤新。標籤老一直活躍。當我意圖活動差異和回來。它顯示正確。

我沒有發現問題。請。幫我!

這是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> 

這是選擇

<?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

您的問題不清晰,簡潔,請添加更多細節,詳細說明和分享您的嘗試。 –

+0

我更新我的問題 –

回答

0

我發現這個問題。我添加requestLayout();現在它工作了!

@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); 
    } 
}