質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1610閲覧

全て「商品」と同じ表示にしたい

syyyow

総合スコア28

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/05/26 14:39

編集2018/06/07 05:34

少し長くなります。また文章が
わからない箇所もあるかと思いますが
どうぞよろしくお願いいたします。

現在、android studioでショッピングサイトの作成をしております。
BottomNavigationViewにて作成しているのですが
下に表示されるアイコンの大きさを均等にする方法を教えていただきたいです。

写真のように[商品]だけが大きく表示されてしまいます。

イメージ説明

当方が書いてきたコードは以下です。
MaimActivity.java
↓↓↓↓↓↓↓↓↓↓↓↓↓

import

1import android.support.annotation.NonNull; 2import android.support.design.widget.BottomNavigationView; 3import android.support.v7.app.AppCompatActivity; 4import android.view.MenuItem; 5import android.widget.TextView; 6 7public class MainActivity extends AppCompatActivity { 8 9 private TextView mTextMessage; 10 11 private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener 12 = new BottomNavigationView.OnNavigationItemSelectedListener() { 13 14 @Override 15 public boolean onNavigationItemSelected(@NonNull MenuItem item) { 16 switch (item.getItemId()) { 17 case R.id.navigation_product: 18 mTextMessage.setText(R.string.title_product); 19 return true; 20 case R.id.navigation_cart: 21 mTextMessage.setText(R.string.title_cart); 22 return true; 23 case R.id.navigation_delivery_status: 24 mTextMessage.setText(R.string.title_delivery_status); 25 return true; 26 case R.id.navigation_mypage: 27 mTextMessage.setText(R.string.title_mypage); 28 return true; 29 case R.id.navigation_other: 30 mTextMessage.setText(R.string.title_other); 31 return true; 32 } 33 return false; 34 } 35 }; 36 37 @Override 38 protected void onCreate(Bundle savedInstanceState) { 39 super.onCreate(savedInstanceState); 40 setContentView(R.layout.activity_main); 41 42 mTextMessage = (TextView) findViewById(R.id.message); 43 BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); 44 navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); 45 } 46}

Activity Main
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="0dp" android:layout_height="59dp" android:background="?android:attr/windowBackground" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toRightOf="parent" app:menu="@menu/navigation" /> </android.support.constraint.ConstraintLayout>

navigation.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/navigation_product" android:icon="@drawable/ic_home_black_24dp" android:title="商品" /> <item android:id="@+id/navigation_cart" android:icon="@drawable/ic_shopping_cart_black_24dp" android:title="カート" /> <item android:id="@+id/navigation_delivery_status" android:icon="@drawable/ic_local_shipping_black_24dp" android:title="配送状況" /> <item android:id="@+id/navigation_mypage" android:icon="@drawable/ic_person_black_24dp" android:title="マイページ" /> <item android:id="@+id/navigation_other" android:icon="@drawable/ic_settings_black_24dp" android:title="その他" /> </menu>

手順①
[4つ以上のアイテムを均等の大きさで並べる]
4つ以上のアイテムを均等に並べるにはレイアウトをごにょごにょする必要があるが、今回はBottomNavigationViewを継承してBottomNavigationViewの独自クラスをするのではなく
「BottomNavigationViewHelper」というヘルパークラスを作成してBottomNavigationViewを作るときにレイアウトを調整する。

BottomNavigationViewHelperを新規に作成する
こちらがwebからみつけだしたコードなのですが
どう変更したら良いか教え頂けますと幸いです。

package com.myapp.myapp; import android.support.design.internal.BottomNavigationItemView; import android.support.design.internal.BottomNavigationMenuView; import android.support.design.widget.BottomNavigationView; import java.lang.reflect.Field; public class BottomNavigationViewHelper { /** * BottomNavigationViewのアイテムのサイズの調整、アイコンサイズ調整、タイトルの削除 * * @param view */ public static void disableShiftMode(BottomNavigationView view) { BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0); try { Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode"); shiftingMode.setAccessible(true); shiftingMode.setBoolean(menuView, false); shiftingMode.setAccessible(false); for (int i = 0; i < menuView.getChildCount(); i++) { /** * アイテムの幅調整 */ BottomNavigationItemView bottomNavigationItemView = (BottomNavigationItemView) menuView.getChildAt(i); // noinspection RestrictedApi bottomNavigationItemView.setShiftingMode(false); // チェックされた値を設定すると、ビューが更新されるみたい // noinspection RestrictedApi bottomNavigationItemView.setChecked(false); } } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }

手順②

ActivityからBottomNavigationViewHelperを呼びす onCreateでBottomNavigationViewHelper#disableShiftModeへBottomNavigationViewを渡し調整、その後ついでに選択のリスナーを実装 // ボトムナビゲーションを読み込む BottomNavigationView bottomavigation = (BottomNavigationView) findViewById(R.id.bottom_navigation); // BottomNavigationViewHelperでアイテムのサイズ、アニメーションを調整 BottomNavigationViewHelper.disableShiftMode(bottomavigation); // BottomNavigationViewを選択したときのリスナー bottomavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { // 各選択したときの処理 switch (item.getItemId()) { case R.id.nav_camera: return true; case R.id.nav_gallery: return true; case R.id.nav_slideshow: return true; case R.id.nav_manage: return true; } return false; } });

どこをどう変更して追加すると
エラーがなく正常に作動するのか、わかりませんmm

エラーメッセージ

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/26 14:56

アイコンのサイズは同じかと(タブのサイズがちがうだけだろうなぁ)
syyyow

2018/05/26 14:58

ここを均一にしたいんですよねTT 商品のようにTT
退会済みユーザー

退会済みユーザー

2018/05/26 15:28

とりま作りかけのコードがないことには回答はつきづらいとおもうから頑張ってね
m.ts10806

2018/05/26 21:43

現在のコードで起きている問題とその問題に対してやってみたことを追記してください。「分かっていること(できていること)」と「わかっていないこと(できていないこと)」を書かないことには回答の方向性と落とし所が不明瞭なため回答がつきにくいです。
syyyow

2018/05/29 00:50

ご指摘ありがとうございます。追記させていただきました。
syyyow

2018/05/29 02:35 編集

追記致しました。よろしくお願いいたします。
dit.

2018/06/04 06:55

2018/06/04 15:23のコメントで解決できたとありますが質問が受付中となっています。回答によって解決した場合はその回答をベストアンサーに、自己解決した場合は自分で回答を書いて解決済みにしてください。https://teratail.com/help#resolve-question
guest

回答1

0

ベストアンサー

私はJavaはあまりできませんが。

エラーメッセージ読んでください。

BottomNavigationViewHelper クラスはどこに書いてあるのでしょうか? ( ファイル名がわからん... )

エラーメッセージを読むと、

「BottomNavigationViewHelperはBottomNavigationViewHelper.javaで書け」みたいなやつなので、

もしかして、

ファイル名: Bottom1.java
クラス名: BottomNavigationViewHelper

とかみたいになっていません?

ファイル名は適当ですが。

Javaは

ファイル名 = クラス名

です。

インターフェースだったり、private なクラスとか以外は

クラス名 = ファイル名

のjavaファイルに記載するべきです。

( privateでも一緒に書けますが、classファイルになるときは分割されます。 )

たぶんこれがエラー理由。エラーメッセージを読む限り。

また、エラーメッセージもなるべく画像はやめてください。

引用したりとかするのが大変。

投稿2018/05/31 04:12

BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syyyow

2018/06/04 06:23

ご回答ありがとうございました。 エラーメッセージの件申し訳ございません。 解決できました!
BeatStar

2018/06/07 01:27

dit.さんが修正依頼の方で「回答によって解決した場合はその回答をベストアンサーに、自己解決した場合は自分で回答を書いて解決済みにしてください」(原文ママ) と述べていらっしゃいますね。 その通りです。 質問者さんにとっては解決できた問題でも、もしかしたら別の人が似たような問題に直面して検索した結果、このページを閲覧して...ってこともあります。 そういう方々のためにも「どのように解決できたか」(勘違い、検索ミスetc.も含む)を記述してください。(「自己解決」の項目に。)
dit.

2018/06/07 04:28

BeatStarさん 指摘をしたdit.です。 すみません、私がコメントをしたタイミングではベストアンサーが決まっておらず、その数分後にみるとこちらの回答がベストアンサーになっておりましたので、ファイル名とクラス名の関係を見直すことで解決したのかな と思っていました。(Javaについての知識はほとんどありません) teratailの「質問するときのヒント 4-2」にお礼だけでなくどのように解決したのかを伝えましょう https://teratail.com/help/question-tips#questionTips4-2 とありますので、質問者さんがそれを踏まえたコメントをして下さるのを期待しています。
syyyow

2018/06/07 05:12

ご指摘ありがとうございます。 訂正し、同じ悩みを持つ方の参考となるよう記述しておきます。 失礼いたしました><
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問