私は最近、Googleがデザインライブラリ25で導入したAndroidの下部レイアウトナビゲーションスタイルを使用しています。私がドロウアブルフォルダーに保存している画像は72x72であるにもかかわらず、私のものは非常に小さいです。
アイコンは、少なくとも2倍、おそらく3倍のサイズにする必要があります。どうすればいいですか? bottom_layout.xmlのコードは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<item
Android:id="@+id/menu_home"
Android:title="test"
Android:icon="@drawable/tabbarglossary"
app:showAsAction="always|withText"
/>
<item
Android:id="@+id/menu_search"
Android:title="test2"
Android:icon="@drawable/mediationtabbar"
app:showAsAction="always|withText"
/>
<item
Android:id="@+id/menu_notifications"
Android:title="test3"
Android:icon="@drawable/ic_action_name"
app:showAsAction="always|withText"
/>
</menu>
そして、私のactivity_main.xmlで:
<Android.support.design.widget.BottomNavigationView
Android:id="@+id/navigation"
Android:layout_width="match_parent"
Android:layout_height="80dp"
Android:layout_alignParentBottom="true"
Android:layout_gravity="bottom"
Android:layout_marginBottom="0dp"
Android:layout_marginLeft="0dp"
Android:layout_marginRight="0dp"
Android:focusable="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
design:menu="@menu/bottom_layout" />
ありがとう
アイコンのサイズは、アイテムレイアウトで24dpにハードコーディングされています( design_bottom_navigation_item.xml を参照)。これはプログラムで変更できます。
BottomNavigationView bottomNavigationView = (BottomNavigationView) activity.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();
// set your height here
layoutParams.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
// set your width here
layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
iconView.setLayoutParams(layoutParams);
}
[〜#〜] edit [〜#〜]
アイコンがテキストを覆っているという問題について:
下部のナビゲーションビューの一部のデフォルトディメンションをオーバーライドできます。たとえば、高さ。
<dimen name="design_bottom_navigation_height" tools:override="true">56dp</dimen>
デフォルトの仕様については、 guidelines bottom navigation を確認してください。
app:itemIconSize
プロパティに希望の値を設定します。
Android Asset Studio から 汎用アイコンの生成 を使用してみてください:
注:必要に応じてカスタムアイコンを使用できます。
次に、適切なディレクトリ(mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi)を使用して、対応するドロアブルを生成します。
ケースに72x72などの静的な描画可能な寸法があると、電話機の密度に応じてアイコンのサイズが変わる場合があり、電話機ごとにピクセルの変換方法が異なります。
Zipファイル内のアイコンをダウンロードして、描画可能なフォルダーをリソースディレクトリに展開するだけで、問題が解決するはずです。
ここに:
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, 20,
displayMetrics);
layoutParams.width = (int)
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20,
displayMetrics);
iconView.setLayoutParams(layoutParams);
}
必要に応じて画像のサイズを調整できます。ハッピーコーディング
下のナビゲーションに次の2行を追加します。
app:menu="@menu/main_bottom_navigation"
app:itemIconSize="@dimen/bottom_navigation_icon_size"
dimens.xml
に追加:
<dimen name="bottom_navigation_icon_size" tools:override="true">32dp</dimen>
<dimen name="design_bottom_navigation_height" tools:override="true">72dp</dimen>
アイコンのサイズを増やすには、bottom_navigation_icon_size
を増やします。 design_bottom_navigation_height
の値を変更して、テキストが重ならないようにしたり、余白を増やしたりする必要がある場合があります。
dimens.xmlのオーバーライド:
<dimen name="design_bottom_navigation_icon_size" tools:override="true">'your size in dp'</dimen>