Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在项目上设置文本后,我的项目导航抽屉的字体会更改?_Java_Android_Xml_Android Studio - Fatal编程技术网

Java 为什么在项目上设置文本后,我的项目导航抽屉的字体会更改?

Java 为什么在项目上设置文本后,我的项目导航抽屉的字体会更改?,java,android,xml,android-studio,Java,Android,Xml,Android Studio,以下是我的职能: 在这个函数中,我在单击一些按钮后定义了抽屉布局,并调用了set navigation items private void setNavigationView() { DrawerLayout drawerLayout = findViewById(R.id.drawable_main); ImageView menuBtn = findViewById(R.id.drawer_btn); menuBtn.setOnClickListener(view

以下是我的职能:

在这个函数中,我在单击一些按钮后定义了抽屉布局,并调用了set navigation items

private void setNavigationView() {

    DrawerLayout drawerLayout = findViewById(R.id.drawable_main);
    ImageView menuBtn = findViewById(R.id.drawer_btn);
    menuBtn.setOnClickListener(view -> drawerLayout.openDrawer(Gravity.RIGHT));

    setNavigationItems();

}
在这个函数中,我设置了保存在共享首选项中的城市名称,并调用了一些项目:

private void setNavigationItems() {

    sharedPrfManager = new SharedPrfManager(MainActivity.this);
    navigationView = findViewById(R.id.navigationView_id);
    View header = navigationView.getHeaderView(0);

    setItemNavigation();
    btn_join = header.findViewById(R.id.button_joinOrEnter);
    navigationView.setNavigationItemSelectedListener(menuItem -> {
        switch (menuItem.getItemId()) {

            case R.id.drawer_userpannel:

                break;
            case R.id.drawer_chooseCity:
                Intent intentGetCity = new Intent(MainActivity.this,CityActivity.class);
                startActivityForResult(intentGetCity , 2);

                break;
            case R.id.drawer_favorites:

                break;
            case R.id.drawer_connect_us:

                break;
            case R.id.drawer_rate_app:

                break;
            case R.id.drawer_shares:

                break;


        }

        return true;
    });

}
在这个函数中,我从城市活动中选择了城市,然后调用setItemNavigation()从共享首选项设置城市名称:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 2 && resultCode==RESULT_OK)
    {
        if (data != null){
            sharedPrfManager.saveCity(data.getStringExtra("nameCity"),data.getIntExtra("idCity",0));
            setItemNavigation();
        }
    }
}

private void setItemNavigation() {

    Menu menuitemView = navigationView.getMenu();
    MenuItem menucity = menuitemView.findItem(R.id.drawer_chooseCity);
    if (sharedPrfManager.getCityId() != 0)
    {
        menucity.setTitle( "انتخاب شهر(" + sharedPrfManager.getCityName() + ")");
    }
}
我的菜单项在那里:

            <item
                android:id="@+id/drawer_userpannel"
                android:title="@string/str_user_pannel"
                android:icon="@drawable/ic_user_pannel"
                />
            <item
                android:id="@+id/drawer_chooseCity"
                android:title="@string/str_choose_city"
                android:icon="@drawable/ic_location"/>
            <item
                android:id="@+id/drawer_favorites"
                android:title="@string/str_favorites"
                android:icon="@drawable/ic_heart"/>
            <item
                android:id="@+id/drawer_connect_us"
                android:title="@string/str_connect_us"
                android:icon="@drawable/ic_contact_us"/>
            <item
                android:id="@+id/drawer_rate_app"
                android:title="@string/str_rate_app"
                android:icon="@drawable/ic_favorite_1"/>
            <item
                android:id="@+id/drawer_shares"
                android:title="@string/str_shares"
                android:icon="@drawable/ic_share"/>

您可以看到,在使用程序之前,我为选择城市调用了相同的函数,启动程序之后,我从导航项目中选择城市,但我不知道为什么在设置一个项目的文本后,我的项目的某些字体会发生变化!
谢谢你的回复。

我的第一个建议是使用 但您也可以使用此功能手动设置导航的字体:

在简历上写下以下内容:

        Menu m = navigationView.getMenu();

        for (int i = 0; i < m.size(); i++) {
            MenuItem mi = m.getItem(i);

            //for aapplying a font to subMenu ...
            SubMenu subMenu = mi.getSubMenu();
            if (subMenu != null && subMenu.size() > 0) {
                for (int j = 0; j < subMenu.size(); j++) {
                    MenuItem subMenuItem = subMenu.getItem(j);
                    applyFontToMenuItem(subMenuItem);
                }
            }

            //the method we have create in activity
            applyFontToMenuItem(mi);
        }
private void applyFontToMenuItem(MenuItem mi) {
            Typeface font = Typeface.createFromAsset(getAssets(), "fonts/Vazir-Bold-FD.ttf");
            SpannableString mNewTitle = new SpannableString(mi.getTitle());
            mNewTitle.setSpan(new CustomTypefaceSpan("", font), 0, mNewTitle.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
            mi.setTitle(mNewTitle);
        }