Как исправить эффект нажатия BottomNavigation стать невидимым с помощью пульсации - AndroidX - PullRequest
0 голосов
/ 14 октября 2019

Я использую background = ripple для создания эффекта прессования в BottomNavigation, но в моем случае цвет MyBottomNavigation темный, поэтому кажется, что он стал невидимым из-за серого цвета эффекта ряби, есть ли другой способ исправить это?

// MainActivity.java

//BottomNavigation
    BottomNavigationView mBottomNav = findViewById(R.id.Bottom_Navigation);

    mBottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
            Fragment selectedFragment = null;

            switch(menuItem.getItemId()){
                case R.id.Nav_Home:
                    selectedFragment = new HomePageFragment();
                    break;

                /*case R.id.Nav_Favorites:
                selectedFragment = new FavoritesPageFragment();
                    break;*/

                /*case R.id.Nav_Favorites:
                    selectedFragment = new SettingPageFragment();
                    break;*/

                case R.id.Nav_Follow:
                    selectedFragment = new FollowPageFragment();
                    break;

                /*case R.id.Nav_Chat:
                    selectedFragment = new ChatPageFragment();
                    break;*/

                case R.id.Nav_Profile:
                    selectedFragment = new ProfilePageFragment();
                    break;
            }

            getSupportFragmentManager().beginTransaction().replace(R.id.Fragment_Container, selectedFragment).commit();
            return true;
        }


    });


    mBottomNav.setItemIconTintList(null);

// activity_main.xml

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/Bottom_Navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    app:menu="@menu/bottom_navigation"
    android:backgroundTint="@color/colorBlack"
    android:background="@drawable/ripple_effect_raised"
    app:itemIconTint="#ffffff"
    app:itemTextAppearanceActive="@style/navTextActive"
    app:itemTextAppearanceInactive="@style/navTextInactive"

    app:itemTextColor="#ff0000"/>

// Ripple.xml (эффект для печати)

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/colorWhite">

<item>
    <shape android:shape="rectangle">
        <solid android:color="@android:color/black" />
        <corners android:radius="7dp" />

    </shape>
</item>

// ОБНОВЛЕНО

// Activity.xml

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/Bottom_Navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    app:menu="@menu/bottom_navigation"

    app:itemTextAppearanceActive="@style/navTextActive"
    app:itemTextAppearanceInactive="@style/navTextInactive"
    app:itemIconTint="#ffffff"
    app:itemTextColor="#FFFFFF"

    android:background="@drawable/shape"
    app:itemRippleColor="@color/bottomnav_ripple"
    />

// bottomnav_ripple.xml (я поместил его в res / color)

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<!-- Selected. -->

<item android:alpha="0.68" android:color="#21FFFF" android:state_pressed="true" android:state_selected="true"/>
<item android:alpha="0.66" android:color="#21FFFF" android:state_focused="true" android:state_hovered="true" android:state_selected="true"/>
<item android:alpha="0.62" android:color="#21FFFF" android:state_focused="true" android:state_selected="true"/>
<item android:alpha="0.54" android:color="#21FFFF" android:state_hovered="true" android:state_selected="true"/>
<item android:alpha="0.50" android:color="#21FFFF" android:state_selected="true"/>

<!-- Unselected. -->

<item android:alpha="0.68" android:color="#FFFFFF" android:state_pressed="true"/>
<item android:alpha="0.66" android:color="#FFFFFF" android:state_focused="true" android:state_hovered="true"/>
<item android:alpha="0.62" android:color="#FFFFFF" android:state_focused="true"/>
<item android:alpha="0.54" android:color="#FFFFFF" android:state_hovered="true"/>
<item android:alpha="0.50" android:color="#FFFFFF"/>

// shape.xml (я поместил его в res / drawable) (цвет все еще невидим, если я использую черный цвет в shape.xml, поэтому я пытаюсь использовать фиолетовый цвет, но он все еще серый)

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle">
<solid android:color="@android:color/holo_purple" />
<corners android:radius="7dp" />
</shape>

it still grey

1 Ответ

1 голос
/ 14 октября 2019

Используйте android:background только для формы и app:itemRippleColor для определения пульсации на элементе:

  <com.google.android.material.bottomnavigation.BottomNavigationView
      android:background="@drawable/shape"
      app:itemRippleColor="@color/bottomnav_ripple"
      ../>

, где shape.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
  <solid android:color="@android:color/black" />
  <corners android:radius="7dp" />
</shape>

и bottomnav_ripple.xml что-то вроде:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Selected. -->

<item android:alpha="0.68" android:color="#21FFFF" android:state_pressed="true" android:state_selected="true"/>
<item android:alpha="0.66" android:color="#21FFFF" android:state_focused="true" android:state_hovered="true" android:state_selected="true"/>
<item android:alpha="0.62" android:color="#21FFFF" android:state_focused="true" android:state_selected="true"/>
<item android:alpha="0.54" android:color="#21FFFF" android:state_hovered="true" android:state_selected="true"/>
<item android:alpha="0.50" android:color="#21FFFF" android:state_selected="true"/>

    <!-- Unselected. -->

<item android:alpha="0.68" android:color="#FFFFFF" android:state_pressed="true"/>
<item android:alpha="0.66" android:color="#FFFFFF" android:state_focused="true" android:state_hovered="true"/>
<item android:alpha="0.62" android:color="#FFFFFF" android:state_focused="true"/>
<item android:alpha="0.54" android:color="#FFFFFF" android:state_hovered="true"/>
<item android:alpha="0.50" android:color="#FFFFFF"/>

</selector>

Измените цвет и альфа-канал по своему усмотрению.

enter image description here

...