[JAVA] Ich habe versucht, ein wenig mit BottomNavigationView zu spielen ①

android.support.design.widget.BottomNavigationView ist eine der offiziellen Bibliotheken.
Bottom navigation

■ Ändern Sie die Farbe des Symbols und des Texts (wenn ausgewählt oder nicht ausgewählt).

1. Erstellen Sie ein Farbverzeichnis in res

2. Erstellen Sie buttom_navigation.xml im Farbverzeichnis und schreiben Sie den folgenden Inhalt

res/color/buttom_navigation.xml


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="#FFF" />
    <item android:state_pressed="true" android:color="#FFF" />
    <item android:color="#969696" />
</selector>

3. Geben Sie für die Buttom-Navigationsansicht an

res/layout/main.xml


...
    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="?android:attr/windowBackground"
        app:itemBackground="@color/themecolor"
        app:itemIconTint="@color/buttom_navigation"
        app:itemTextColor="@color/buttom_navigation"
        app:menu="@menu/navigation" />
...

Referenz: Anpassung von BottomNavigationView

■ Zeigen Sie weiterhin Zeichen auf nicht ausgewählten Registerkarten an

main.java


...

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mTextMessage = (TextView) findViewById(R.id.message);
        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
        
        // no-hide menu-text
        BottomNavigationMenuView menuView = (BottomNavigationMenuView) navigation.getChildAt(0);
        for (int i = 0; i < menuView.getChildCount(); i++) {
            BottomNavigationItemView itemView = (BottomNavigationItemView) menuView.getChildAt(i);
            itemView.setShiftingMode(false);
            itemView.setChecked(false); //Wird aufgerufen, um den Status der Ansicht wiederzugeben
        }
    }

■ Korrigieren Sie die Breite und den Rand aller Registerkarten

Wenn im Standardzustand vier Registerkarten (Elemente) vorhanden sind, wird die Breite der ausgewählten Registerkarte erheblich erweitert und die anderen werden verkleinert. Ich möchte alle vier Breiten reparieren.

Referenz: Android android.support.design.widget.BottomNavigationView with 4 items not equally width [duplicate]

BottomNavigationViewHelper.java


public class BottomNavigationViewHelper {
    public static void disableShiftMode(BottomNavigationView view) {
        BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
        try {
            Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
            shiftingMode.setAccessible(true);
            shiftingMode.setBoolean(menuView, false);
            shiftingMode.setAccessible(false);
            for (int i = 0; i < menuView.getChildCount(); i++) {
                BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
                //noinspection RestrictedApi
                item.setShiftingMode(false);
                // set once again checked value, so view will be updated
                //noinspection RestrictedApi
                item.setChecked(item.getItemData().isChecked());
            }
        } catch (NoSuchFieldException e) {
            Log.e("BNVHelper", "Unable to get shift mode field", e);
        } catch (IllegalAccessException e) {
            Log.e("BNVHelper", "Unable to change value of shift mode", e);
        }
    }
}

main.java


...
        mTextMessage = (TextView) findViewById(R.id.message);
        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        BottomNavigationViewHelper.disableShiftMode(navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
...

Recommended Posts

Ich habe versucht, ein wenig mit BottomNavigationView zu spielen ①
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe DI mit Ruby versucht
Ich habe versucht, mit OCR eine PDF-Datei mit Java zu verarbeiten
Ich habe UPSERT mit PostgreSQL ausprobiert.
Ich habe BIND mit Docker ausprobiert
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
[Rails] Ich habe versucht, eine Mini-App mit FullCalendar zu erstellen
Ich habe versucht, mit Docker eine Padrino-Entwicklungsumgebung zu erstellen
Ich habe versucht, eine PDF-Datei mit Java part2 zu verarbeiten
Ich habe versucht, JOOQ mit Gradle zu verwenden
Ich habe eine morphologische Analyse mit MeCab versucht
Ich habe mit Swing eine GUI erstellt
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe GraphQL mit Spring Boot ausprobiert
Ich habe Flyway mit Spring Boot ausprobiert
Ich habe versucht, Slim mit Scaffold anzupassen
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports 1/3 (Jasper Reports-Einstellungen) zu drucken.
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports 3/3 (Spring MVC-Steuerung) zu drucken.
Ich habe versucht, eine Kreditkartenhandelsanwendung mit Corda 1 auszuführen
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
Ich habe versucht, Realm mit Swift UI zu verwenden
Ich habe versucht, mit Web Assembly zu beginnen
Ich habe versucht, Scalar DL mit Docker zu verwenden
Ich habe versucht, OnlineConverter mit SpringBoot + JODConverter zu verwenden
Tipps zur Geschwindigkeitsverbesserung mit ein wenig Technik
Ich habe mit Studyplus zeitsparendes Management-Lernen versucht.
Ich habe mit Ruby einen riskanten Würfel gemacht
Ich habe versucht, OpenCV mit Java + Tomcat zu verwenden
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Ich habe eine Janken App mit Kotlin gemacht
Eine kleine süchtig machende Geschichte mit def initialize
Ich habe eine Janken App mit Android gemacht
Ich habe versucht, eine Formel in Javadoc einzubetten
Ich habe versucht, Java mit einer Reihe zu lernen, die Anfänger klar verstehen können
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports 2/3 (Formularvorlagenerstellung) zu drucken.
[iOS] Ich habe versucht, mit Swift eine insta-ähnliche Verarbeitungsanwendung zu erstellen
Ich habe versucht, eine Web-API zu erstellen, die mit Quarkus eine Verbindung zur Datenbank herstellt
Ich habe versucht, die Routensuchmaschine (OSRM) einfach mit einem Container auszuführen
[Persönliches Memo] Ich habe etwas über Modifikatoren gelernt
Ich habe versucht, ein Portfolio mit AWS, Docker, CircleCI, Laravel [mit Referenzlink] zu erstellen.
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 3 ~ Übung ~ erstellt
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich habe versucht, die Federbeinkonfiguration mit Coggle zu verwalten
Ich habe versucht, mit HCE-F von Android eine Funktion zu implementieren, die Felica Lite entspricht
Ich habe versucht, Anmeldeinformationen mit JMX zu verwalten
04. Ich habe mit SpringBoot + Thymeleaf ein Frontend gemacht
Ich habe Mosaikkunst mit Pokemon-Bildern gemacht
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe versucht, ein Personalmanagement-Tool zu entwickeln
Ich habe versucht, eine Website für das Studium von DUO3.0 zu entwickeln.