[英]Bottom Navigation Bar: Text size is increasing on pressing?
I am using the Bottom Navigation Bar in Android.我在 Android 中使用底部导航栏。 By default when I select an item the text size of the label of that item increases.
默认情况下,当我选择一个项目时,该项目标签的文本大小会增加。 As seen here by the 'tournaments' label.
正如此处的“锦标赛”标签所见。
Is there a way to remove this so the word 'tournaments' stays the same size?有没有办法删除它,以便“锦标赛”这个词保持相同的大小?
Try to add this code in dimens.xml
file尝试在
dimens.xml
文件中添加此代码
<dimen name="design_bottom_navigation_text_size" tools:override="true">10sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">10sp</dimen>
You can set the active and inactive textAppearance for a BottomNavigationView via styles:您可以通过样式设置 BottomNavigationView 的活动和非活动textAppearance:
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/BottomNavigationView"/>
Put below styles in styles.xml
file将下面的样式放在
styles.xml
文件中
<style name="BottomNavigationView">
<item name="itemTextAppearanceActive">@style/TextAppearance.BottomNavigationView.Active</item>
<item name="itemTextAppearanceInactive">@style/TextAppearance.BottomNavigationView.Inactive</item>
</style>
<!-- blank styles for better code readability-->
<style name="TextAppearance"/>
<style name="TextAppearance.BottomNavigationView"/>
<!-- inactive tab icon style -->
<style name="TextAppearance.BottomNavigationView.Inactive">
<item name="android:textSize">12sp</item>
</style>
<!-- active tab icon style -->
<style name="TextAppearance.BottomNavigationView.Active">
<item name="android:textSize">12sp</item>
</style>
With TextAppearance you can control more than just textSize
, but also properties such as fontFamily
, etc.使用 TextAppearance,您不仅可以控制
textSize
,还可以控制fontFamily
等属性。
You have to do 2 simple things if your using support library ' 28.0.0-alpha1 ' or higher -如果您使用支持库“ 28.0.0-alpha1 ”或更高版本,您必须做两件简单的事情 -
Add below two lines in your dimen.xml file在 dimen.xml 文件中添加以下两行
<dimen name="design_bottom_navigation_text_size" tools:override="true">15sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">15sp</dimen>
And in view -并且在看来——
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:foreground="?attr/selectableItemBackground"
app:itemIconTint="@color/colorAccent"
app:itemTextColor="@color/colorAccent"
android:elevation="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:labelVisibilityMode="labeled"
app:menu="@menu/navigation" />
Put app:labelVisibilityMode="labeled"
把
app:labelVisibilityMode="labeled"
That's all enjoy :-)这就是享受:-)
All control UI BottomNavigationView, below.所有控件 UI BottomNavigationView,如下。 I used dependence com.google.android.material:material for BottomNavigationView.
我使用依赖 com.google.android.material:material 作为 BottomNavigationView。
private void editBottomNavigationViewItems(BottomNavigationView bottomNavigationView) {
for (int i = 0; i < bottomNavigationView.getChildCount(); i++) {
try {
View item = bottomNavigationView.getChildAt( i );
if (item instanceof BottomNavigationMenuView) {
BottomNavigationMenuView menu = (BottomNavigationMenuView) item;
for (int j = 0; j < menu.getChildCount(); j++) {
try {
View menuItem = menu.getChildAt( j );
// not chosen item menu GO
View _small = menuItem.findViewById(com.google.android.material.R.id.smallLabel);//dependence com.google.android.material:material
//View _small = menuItem.findViewById(android.support.design.R.id.smallLabel);// dependence android.support.design
if ( _small instanceof TextView ) {
//_small.setPadding(0, 0, 0, 0);// remove all padding
TextView _tv = (TextView)_small;
_tv.setTextSize( 12 );// set size text
}// not chosen item menu END
//this chosen item menu GO
View _large = menuItem.findViewById(com.google.android.material.R.id.largeLabel);//dependence com.google.android.material:material
//View _large = menuItem.findViewById(android.support.design.R.id.largeLabel);//dependence android.support.design.R.id.largeLabel
if ( _large instanceof TextView ) {
_large.setPadding(0,0,0,0);// remove all padding
TextView _tv = (TextView)_large;
_tv.setTextSize( 12 );// set size text
}// this chosen item menu END
} catch ( NullPointerException npei ) {
Log.e("TAG", "get:BottomNavigationMenuView: " + npei.getMessage() );
}
}
}
} catch ( NullPointerException npe ) {
Log.e("TAG", "get:BottomNavigationView: " + npe.getMessage() );
}
}
}
Use this method in onCreate() and before bottom_navigation_menu.setOnNavigationItemSelectedListener:-在 onCreate() 和 bottom_navigation_menu.setOnNavigationItemSelectedListener 之前使用此方法:-
public void removePaddingFromBottomNavigationItem() {
BottomNavigationMenuView menuView = (BottomNavigationMenuView) bottom_navigation_menu.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
View activeLabel = item.findViewById(R.id.largeLabel);
if (activeLabel instanceof TextView) {
activeLabel.setPadding(0, 0, 0, 0);
}
}
}
And use this code in styles.xml:-并在styles.xml 中使用此代码:-
<style name="TextAppearance.BottomNavigationView.Inactive">
<item name="android:textSize">@dimen/_10ssp</item>
</style>
<style name="TextAppearance.BottomNavigationView.Active">
<item name="android:textSize">@dimen/_10ssp</item>
</style>
Try with below line in dimen.xml尝试在 dimen.xml 中使用以下行
<dimen name="design_bottom_navigation_text_size" tools:override="true">8sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">8sp</dimen>
<dimen name="design_bottom_navigation_icon_size">15dp</dimen>
<dimen name="design_bottom_navigation_height">45dp</dimen>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.