Android 更改底部导航视图';s图标大小
我一直在试用新的BottomNavigationView,并尝试对其进行定制 到目前为止,我已通过以下方法更改了高度和边距:Android 更改底部导航视图';s图标大小,android,bottomnavigationview,Android,Bottomnavigationview,我一直在试用新的BottomNavigationView,并尝试对其进行定制 到目前为止,我已通过以下方法更改了高度和边距: <dimen name="design_bottom_navigation_height" tools:override="true">75dp</dimen> <dimen name="design_bottom_navigation_margin" tools:override="true">5dp</dimen> 7
<dimen name="design_bottom_navigation_height" tools:override="true">75dp</dimen>
<dimen name="design_bottom_navigation_margin" tools:override="true">5dp</dimen>
75dp
5dp
我想增加图标的大小
如何做到这一点
编译版本:com.android.support:design:25.0.1图标大小在项目布局中硬编码为24dp(请参阅),可以通过编程方式更改:
BottomNavigationView bottomNavigationView = (BottomNavigationView) configurationActivity.findViewById(R.id.bottom_navigation_view);
BottomNavigationMenuView menuView = (BottomNavigationMenuView) bottomNavigationView.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
final View iconView = menuView.getChildAt(i).findViewById(android.support.design.R.id.icon);
final ViewGroup.LayoutParams layoutParams = iconView.getLayoutParams();
final DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
layoutParams.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
iconView.setLayoutParams(layoutParams);
}
BottomNavigationView BottomNavigationView=(BottomNavigationView)配置活动.findViewById(R.id.bottom\u navigation\u视图);
BottomNavigationMenuView menuView=(BottomNavigationMenuView)bottomNavigationView.getChildAt(0);
对于(int i=0;i
晚但最新
使用implementation'com.android.support:design:28.0.0'
design-support库
有一个属性可更改图标大小:
<android.support.design.widget.BottomNavigationView
app:itemIconSize="@dimen/_26sdp">
....
....
</android.support.design.widget.BottomNavigationView>
更新:
如果您使用的是材质库,则它将是相同的。只需更改包名,如下所示
implementation 'com.google.android.material:material:1.1.0'
XML:
dashboardNavigation.setItemIconSize(24);
<com.google.android.material.bottomnavigation.BottomNavigationView
app:itemIconSize="@dimen/_26sdp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
编程方式-同上
谢谢。对于androidx使用此id作为图标
andcom.google.android.material.R.id.icon
完整代码:
BottomNavigationView bottomNavigationView = (BottomNavigationView) configurationActivity.findViewById(R.id.bottom_navigation_view);
BottomNavigationMenuView menuView = (BottomNavigationMenuView) bottomNavigationView.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
final View iconView = menuView.getChildAt(i).findViewById(com.google.android.material.R.id.icon);
final ViewGroup.LayoutParams layoutParams = iconView.getLayoutParams();
final DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
layoutParams.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
iconView.setLayoutParams(layoutParams);
}
BottomNavigationView BottomNavigationView=(BottomNavigationView)配置活动.findViewById(R.id.bottom\u navigation\u视图);
BottomNavigationMenuView menuView=(BottomNavigationMenuView)bottomNavigationView.getChildAt(0);
对于(int i=0;i
这对我使用AndroidX非常有效
您的XML布局
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
style="@style/DA_Bottom_Nav"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
app:itemIconSize="50dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/nav_menu"/>
Res/values/dimens.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<dimen name="design_bottom_navigation_height" tools:override="true">80dp</dimen>
</resources>
80dp
如果您想更改底部导航视图的图标大小,这里有一个简单快捷的解决方案
比方说,您的BottomNavigationView
上有5个项目,您想更改中间图标的大小:
BottomNavigationMenuView menuView = (BottomNavigationMenuView)
mainBinding.bottomNavView.getChildAt(0);
// Here the index: 2 at 'getChildAt(2)' means the middle icon
BottomNavigationItemView navigationItemView = (BottomNavigationItemView) menuView.getChildAt(2);
final DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
navigationItemView.setIconSize((int)
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40,
displayMetrics));
现在您已将其更改;) 我不敢相信他们硬编码的大小,没有使用样式属性来设置值,这可以为开发人员带来更多的灵活性…我爱你,兄弟,你救了我一天!如何在kotlin上获取bottomNavigationView,因为我在:val bottomNavigationView=bottom\u navigation\u View上获取NPE为什么需要调用bottomNavigationView.getChildAt(0)?或者BottomNavigationView和BottomNavigationMenuView之间有什么区别?androidx包的资源名称是什么?如果可以通过编程方式更改它,请参见?如何更改BottomNavigationView中的文本大小。谢谢