2016-01-17 6 views
0

Кнопка Android Floating Action работает отлично до версии 5.0.1 ОС. Но он работает неправильно, а становится прозрачным над ОС версии 5.0.1. С кем-либо сталкивался с такой проблемой. Я должен динамически менять фоновый список оттенков, поэтому определение только в xml не используется полностью. Итак, как справиться с ОС выше 5.0.1. Благодарим вас за сотрудничество.Плавающая кнопка действия Прозрачная над 5.0.1

Изменение динамически TintList Color

mFloatingActionButtonBack.setBackgroundTintList(changeColor(getResources().getColor(R.color.color_gray))); 

Xml для Плавающий Кнопка Действие

<android.support.design.widget.FloatingActionButton 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/contact_floating_btn" 
     app:fabSize="normal" 
     android:src="@drawable/contact_directions" 
     android:layout_alignParentRight="true" 
     android:clickable="true" 
     android:layout_below="@+id/gmap_frag" 
     android:layout_marginTop="@dimen/fab_margin" 
     android:layout_marginRight="@dimen/fab_margin_right" 
     /> 

Style Часть

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/color_primary</item> 
    <item name="colorPrimaryDark">@color/color_primary_dark</item> 
    <item name="colorAccent">@color/color_primary</item> 
    <item name="colorControlNormal">#d7d7d7</item> 
</style> 
+0

вы можете оставить свой XML для FloatingActionButton? –

+0

@MukeshRana добавлено сейчас –

+0

Можете ли вы также добавить styles.xml для версии pre и post 5.0.1? –

ответ

1

То, что я нашел решение этой проблемы я столкнулся следующий.

if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      Fab.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.color_gray))); 
     } else { 
      Fab.setBackgroundTintList(changeColor(getActivity().getResources().getColor(R.color.color_gray))); 
     } 

и метод ColorStateList является

public ColorStateList changeColor(int color){ 
    ColorStateList myColorStateList = new ColorStateList(
      new int[][]{ 
        new int[]{android.R.attr.state_active}, 
        new int[]{android.R.attr.state_window_focused}, 
        new int[]{android.R.attr.state_pressed}, //1 
        new int[]{android.R.attr.state_focused}, //2 
        new int[]{android.R.attr.state_focused, android.R.attr.state_pressed} //3 
      }, 
      new int[]{ 
        color, 
        color, 
        color, //1 
        color, //2 
        color//3 
      } 
    ); 
    return myColorStateList; 

} 

Надеется, что это поможет кому-то еще, имеющим такому же вопрос, как я имел

Смежные вопросы