android 更改自定义底部导航栏中图标和文本的对齐方式
Change alignment of icon and text in custom bottom navigation bar in android
我正在为我的自定义 BottomNavigation 栏使用 "com.luseen.spacenavigation.SpaceNavigationView"。它工作正常,但我的问题是底部导航栏中图标和文本的对齐方式。它水平对齐,但我希望文本在图标下方对齐。如何更改对齐方式?
我的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"/>
在我的Activity
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);
您必须在库中编辑 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
class 并仅修改它。
public void showIconOnly(boolean value) {
isIconOnlyMode = value;
}
并且在您要实现此功能的 activity/fragment 中,只需将此 spaceNavigationView.showIconOnly();
替换为 spaceNavigationView.showIconOnly(false);
发现于 this reply
我正在为我的自定义 BottomNavigation 栏使用 "com.luseen.spacenavigation.SpaceNavigationView"。它工作正常,但我的问题是底部导航栏中图标和文本的对齐方式。它水平对齐,但我希望文本在图标下方对齐。如何更改对齐方式?
我的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"/>
在我的Activity
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);
您必须在库中编辑 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
class 并仅修改它。
public void showIconOnly(boolean value) {
isIconOnlyMode = value;
}
并且在您要实现此功能的 activity/fragment 中,只需将此 spaceNavigationView.showIconOnly();
替换为 spaceNavigationView.showIconOnly(false);
发现于 this reply