Изменить выравнивание значка и текста в пользовательской нижней панели навигации в Android - PullRequest
0 голосов
/ 20 ноября 2018

Я использую com.luseen.spacenavigation.SpaceNavigationView для моей пользовательской панели BottomNavigation. Это работает нормально, но моя проблема с выравниванием значка и текста в нижней панели навигации. Он выровнен по горизонтали, но я хочу, чтобы текст выровнялся под значком. Как я могу изменить выравнивание?

Мой XML

<com.luseen.spacenavigation.SpaceNavigationView
    android:id="@+id/space"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="bottom"
    app:active_item_color="@color/colorAccent"
    app:centre_button_color="@android:color/holo_green_light"
    app:inactive_item_color="@android:color/darker_gray"
    app:space_background_color="@android:color/holo_green_light"
    app:centre_button_icon="@drawable/img1"
    app:space_item_icon_size="@dimen/space_item_icon_default_size"
    app:space_item_icon_only_size="@dimen/space_item_icon_only_size"
    app:space_item_text_size="@dimen/space_item_text_default_size"
    app:layout_behavior="com.luseen.spacenavigation.SpaceNavigationViewBehavior"/>

В моей деятельности

 spaceNavigationView = (SpaceNavigationView) findViewById(R.id.space);
    spaceNavigationView.initWithSaveInstanceState(savedInstanceState);
    spaceNavigationView.addSpaceItem(new SpaceItem("Home", R.drawable.account));
    spaceNavigationView.addSpaceItem(new SpaceItem("Help", R.drawable.ic_home_black_24dp));
    spaceNavigationView.addSpaceItem(new SpaceItem("Bookings", R.drawable.ic_dashboard_black_24dp));
    spaceNavigationView.addSpaceItem(new SpaceItem("Settings", R.drawable.ic_notifications_black_24dp));
    spaceNavigationView.shouldShowFullBadgeText(true);
    spaceNavigationView.setCentreButtonIconColorFilterEnabled(false);
    spaceNavigationView.setSpaceBackgroundColor(Color.WHITE);
    spaceNavigationView.setBackgroundColor(Color.GREEN);

1 Ответ

0 голосов
/ 20 ноября 2018

вам нужно отредактировать файл макета space_item_view.xml внутри библиотеки, чтобы решить эту проблему.

space_item_view.xml

    <RelativeLayout
    android:id="@+id/main_content"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/space_icon"
        android:layout_width="@dimen/space_item_icon_default_size"
        android:layout_gravity="center"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:layout_height="@dimen/space_item_icon_default_size" />

    <TextView
        android:id="@+id/space_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:lines="1"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/space_icon"
        android:gravity="center"
        android:textSize="@dimen/space_item_text_default_size"
        tools:text="Label One" />
    </RelativeLayout>

    <RelativeLayout
    android:id="@+id/badge_container"
    android:layout_width="16dp"
    android:layout_height="16dp"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="@dimen/badge_left_margin"
    android:layout_marginRight="2dp"
    android:layout_marginTop="3dp"
    android:layout_toRightOf="@+id/main_content"
    android:visibility="gone">
    <TextView
        android:id="@+id/badge_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textColor="@android:color/white"
        android:textSize="10sp"
        android:textStyle="bold" />
</RelativeLayout>

Перейти к классу SpaceNavigationView.java и изменить только это.

public void showIconOnly(boolean value) {
    isIconOnlyMode = value;
}

и в вашей деятельности / фрагменте, где вы хотите это реализовать, просто замените этот spaceNavigationView.showIconOnly(); на spaceNavigationView.showIconOnly(false);

, найденный в в этом ответе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...