Почему Android BottomNavigationView не отображается?

Я использую новый Android BottomNavigationView, но нижняя навигация MenuItem не отображается.

После отладки я обнаружил, что пункт меню не нулевой и видимость видна.

После проверки высоты и ширины корневого представления оно становится равным 0 даже после жесткого кодирования значений в макете layout_width=50dp и layout_height=50dp корневого элемента.

Вот мое нижнее меню навигации:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/nearby_fragment"
    android:enabled="true"
    android:icon="@drawable/homenearbyfragment"
    android:title="@string/bottom_nearby"
    app:showAsAction="always"/>

<item
    android:id="@+id/route_fragment"
    android:title="@string/bottom_homescreen"
    android:enabled="true"
    app:showAsAction="always"
    android:icon="@drawable/home_mycommute" />

<item
    android:id="@+id/newsfeed_activity"
    android:title="@string/bottom_news"
    android:enabled="true"
    app:showAsAction="always"
    android:icon="@drawable/newsfeed"
    app:actionLayout="@layout/bagde_layout"/>

</menu>

Схема моего действия:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/actionButtonStyle"
android:layout_width="50dp"
android:layout_height="50dp"
android:clickable="true"
android:focusable="true"
android:gravity="center">

<ImageView
    android:id="@+id/menu_badge_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/newsfeed" />

<TextView
    android:id="@+id/menu_badge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top|end"
    android:layout_marginTop="4dp"
    android:background="@drawable/circle_bg"
    android:gravity="center"
    android:textColor="@android:color/white"
    android:textSize="8sp"
    />

В моем Activity я пытаюсь установить:

private void setCountOnNews(Menu menu) {
    mReportMenu = menu.findItem(R.id.newsfeed_activity);
    FrameLayout count = (FrameLayout) mReportMenu.getActionView();
    count.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, NewsFeedActivity.class);
            startActivity(intent);
            MainApplication.getInstance().trackScreenView(getString(R.string.tracknewsfeedmenu));
        }
    });
    TextView notifCount = (TextView) count.findViewById(R.id.menu_badge);
    //if (Utils.getNewsfeedCountPreference(MainActivity.this) > 0)
    notifCount.setText(String.valueOf(Utils.getNewsfeedCountPreference(MainActivity.this)));
    notifCount.setText("asd;jfnapsdifnaspdifnasdpifnaspdfnapsdifnaspidfnapsidfnaspdiufif");
    Log.d(TAG, "setCountOnNews:" + notifCount.getText().toString());
    //else
    //  notifCount.setVisibility(View.GONE);
}

person user007    schedule 18.03.2017    source источник
comment
Можете ли вы опубликовать код макета Activity xml?   -  person Ishan Fernando    schedule 22.07.2017
comment
@ user007 Не могли бы вы опубликовать скриншот текущего состояния?   -  person Ferdous Ahamed    schedule 28.07.2017
comment
@jaffar, можешь показать нам свой макет?   -  person Ajay S    schedule 28.07.2017
comment
У меня такая же проблема с пользовательским макетом действий, вы нашли, почему это происходит?   -  person Altaiir    schedule 06.04.2018


Ответы (2)


Вы забыли добавить это в свой MainActivity?

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
person Android Admirer    schedule 27.07.2017

если вы используете фрагмент, вам нужно установить в меню параметров значение true.

setHasOptionsMenu(true);

person Harshal Shah    schedule 25.07.2017