有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过菜单子项onclick更改textview的字体

我想在单击菜单子项中的相应项时更改textview的字体类型。我有字体选项Kadwa、Vollkorn和默认值droid sans。我已经能够在单击时显示toast。我是安卓 studio的新手,下面是我目前的代码,我在下面附上了一个截图。不知道下一步该怎么办。谢谢你的帮助。 Image

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_text, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement

    if (id == R.id.item2) {
        Toast.makeText(this, "Night mode", Toast.LENGTH_LONG).show();
        return true;
    }

    if (id == R.id.item3) {
        Toast.makeText(this, "Fonts", Toast.LENGTH_LONG).show();
        return true;
    }

    if (id == R.id.font1) {

        Toast.makeText(this, "Font 1", Toast.LENGTH_LONG).show();
        return true;
    }

    if (id == R.id.font2) {
        Toast.makeText(this, "Font 2", Toast.LENGTH_LONG).show();
        return true;
    }

    if (id == R.id.font3) {
        Toast.makeText(this, "Font 3", Toast.LENGTH_LONG).show();
        return true;
    }


    return super.onOptionsItemSelected(item);
}

菜单xml

  <?xml version="1.0" encoding="utf-8"?>
  <menu xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
  xmlns:app="http://schemas.安卓.com/apk/res-auto">

<item 安卓:title="@string/settings"
    app:showAsAction="always">

    <menu>

        <item 安卓:id="@+id/item2"
            安卓:title="@string/night_mode"
            安卓:icon="@drawable/ic_night"
            app:showAsAction="withText" />

        <item 安卓:id="@+id/item3"
            安卓:title="@string/font"
            app:showAsAction="never" >

            <menu>

                <item 安卓:id="@+id/font1"
                    安卓:title="Kadwa"/>

                <item 安卓:id="@+id/font2"
                    安卓:title="Vollkorn"/>

                <item 安卓:id="@+id/font3"
                    安卓:title="Default"/>

            </menu>

        </item>


    </menu>


</item>

共 (2) 个答案

  1. # 1 楼答案

    //create font using font from asset
    
    Typeface font = Typeface.createFromAsset(
    getContext().getAssets(), 
    "fonts/androidnation.ttf");
    
    textview.setTypeface(font);
    
  2. # 2 楼答案

    TextView上使用setTypeFace方法

    您可以通过以下方式获得字体/字体:

    ResourcesCompat.getFont(this, R.font.fontnamehere)