web-dev-qa-db-ja.com

BottomNavigationViewのアイコンサイズの変更

私は新しいBottomNavigationViewを実験してカスタマイズしようとしています。

これまでのところ、以下を使用して高さとマージンを変更できました。

<dimen name="design_bottom_navigation_height" tools:override="true">75dp</dimen>
<dimen name="design_bottom_navigation_margin" tools:override="true">5dp</dimen>

アイコンのサイズを大きくしたい。

これはどのように行うことができますか?

コンパイルバージョン:com.Android.support:design:25.0.1

13
SitRock

遅いが最新

使用する implementation 'com.Android.support:design:28.0.0'設計サポートライブラリ。

アイコンサイズを変更するプロパティがあります。

<Android.support.design.widget.BottomNavigationView
    app:itemIconSize="@dimen/_26sdp"
    ....
    ....
</Android.support.design.widget.BottomNavigationView>

プログラムで:

dashboardNavigation.setItemIconSize(24);

ありがとうございました。

23
Pratik Butani

アイコンのサイズはアイテムレイアウトで24 dpにハードコード化されており( design_bottom_navigation_item.xml を参照)、プログラムで変更できます。

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);
}
29
ot.

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);
}
0
walkmn