我BottomNavigationView在我的应用程序中添加了像.
main.xml中
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@color/white"
app:itemTextColor="@color/white"
app:menu="@menu/bottom_navigation_main" />
Run Code Online (Sandbox Code Playgroud)
bottom_navigation_main.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/action_favorites"
android:enabled="true"
android:icon="@drawable/ic_favorite_white_24dp"
android:title="@string/text_favorites"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_schedules"
android:enabled="true"
android:icon="@drawable/ic_access_time_white_24dp"
android:title="@string/text_schedules"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_music"
android:enabled="true"
android:icon="@drawable/ic_audiotrack_white_24dp"
android:title="@string/text_music"
app:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
MainActivity点击
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_favorites:
//need change icon of favotites here.
case R.id.action_schedules:
case R.id.action_music:
}
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
我想更改所选位置底部导航的图标.当用户点击一个项目时,我们如何实现此功能?
(如果用户点击了一个项目,那么图标会变为另一个项目)
android android-layout android-support-library bottomnavigationview
我有这样定义的MenuItem:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_starred"
android:icon="@drawable/btn_star"
android:title="@string/description_star"
android:checkable="true"
android:checked="true"
android:orderInCategory="1"
android:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)
并以btn_star.xml这种方式定义:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="false"
android:drawable="@drawable/btn_star_off_normal" />
<item
android:state_checked="true"
android:drawable="@drawable/btn_star_on_normal" />
</selector>
Run Code Online (Sandbox Code Playgroud)
当我创建使用此选项菜单,但是,图标永远不会在其选中的状态显示,即使MenuItem的isChecked()属性为true.
我正在使用ActionBarSherlock控件,但是,如果我只是创建一个普通的选项菜单并调用,我得到相同的结果setChecked(true).btn_star_off无论项目的检查状态如何,它仍然显示drawable.
onOptionsItemSelected()正确调用该方法,我可以成功更改checked属性:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.isCheckable()) {
item.setChecked(!item.isChecked());
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
在此处设置断点会显示isChecked属性已更改,但图标本身未更新以反映正确的状态.
这里有什么我想念的吗?我做错了吗?我无法弄清楚为什么这不能正常工作.
我试图在创建的活动上设置默认项目,但它不起作用?这是我的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_userhome);
mTextMessage = (TextView) findViewById(R.id.message);
profile = (FrameLayout) findViewById(R.id.profile);
mall = (FrameLayout) findViewById(R.id.mall);
dietplan =(FrameLayout) findViewById(R.id.dietplan);
BottomNavigationView navigation = (BottomNavigationView)
findViewById(R.id.navigation);
navigation.setSelectedItemId(R.id.dietplan);
navigation.setOnNavigationItemSelectedListener
(mOnNavigationItemSelectedListener);
}
Run Code Online (Sandbox Code Playgroud)
但似乎navigation.setSelectedItemId(R.id.dietplan);没有用.请帮我设置底部导航栏的默认项:
这是我的堆栈跟踪(logcat):
FATAL EXCEPTION: main
Process: gym.android.ommsoftware.gym, PID: 1915
java.lang.RuntimeException: Unable to start activity ComponentInfo{gym.android.ommsoftware.gym/gym.android.ommsoftware.gym.Userhome}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2464)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5653)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at …Run Code Online (Sandbox Code Playgroud) 我开始研究Android底部导航视图.但我面临一个问题.如果我向底部导航视图添加了5个项目,则只显示项目文本的选定项目.如果我添加3项,它工作正常.请告诉我如何显示所有5个项目的项目文本.先感谢您.
menu.xml文件:
<menu 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"
tools:context="com.reloadapp.reload.activity.IconTabsActivity">
<item
android:id="@+id/action_favorites"
android:enabled="true"
android:icon="@drawable/home_40"
android:title="Home"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_schedules"
android:enabled="true"
android:icon="@drawable/profile_40"
android:title="Profile"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_music"
android:enabled="true"
android:icon="@drawable/reload_40"
android:title="Reload cash"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_musi"
android:enabled="true"
android:icon="@drawable/notifications"
android:title="Notifications"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_mus"
android:enabled="true"
android:icon="@drawable/menu_40"
android:title="More"
app:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
依赖:编译'com.android.support:appcompat-v7:25.0.1'compile'com.android.support:design:25.0.0'
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemBackground="@color/textColorPrimary"
app:menu="@menu/menu_icon_tabs"
app:itemIconTint="@color/colorPrimary"
app:itemTextColor="@color/colorPrimary"
android:layout_alignParentBottom="true">
</android.support.design.widget.BottomNavigationView>
Run Code Online (Sandbox Code Playgroud) android android-menu android-support-library android-bottom-nav-view
我有三件物品 bottomNavigationView
当我单击个人资料项时,代码会检查此人是否已登录。如果此人未登录,则我需要开始一个新的Activityelse 我需要fragment在我的frameLayout.
现在的问题是,当我单击配置文件项并且此人未登录时,活动开始,但是当我单击返回时,配置文件项会突出显示,但主页片段已加载到框架布局中。
我尝试了以下方法来解决这个问题
1)我曾经setSelectedItemId在点击个人资料项目时设置项目颜色但它不起作用
有没有其他方法可以做到这一点?
android android-fragments android-fragmentactivity bottomnavigationview