Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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
在android中更改菜单项的文本大小_Android_Android Layout_Android Menu - Fatal编程技术网

在android中更改菜单项的文本大小

在android中更改菜单项的文本大小,android,android-layout,android-menu,Android,Android Layout,Android Menu,我通过在主活动中使用以下代码在操作栏中使用简单菜单项: package com.kaasib.ftpclient; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.app.ActionBar; public class MainActivity extends Activity {

我通过在主活动中使用以下代码在操作栏中使用简单菜单项:

    package com.kaasib.ftpclient;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.app.ActionBar;


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        boolean ret;
        if(item.getItemId() == R.id.connection_manager){
            ret = true;
        }else{
            ret = super.onOptionsItemSelected(item);
        }

        return ret;
    }
}
以下是main.xml中的菜单xml:

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

    <item
        android:id="@+id/connection_manager"
        android:orderInCategory="100"
        android:showAsAction="collapseActionView"
        android:title="@string/connection_manager"
        android:textSize="2sp"
        />

</menu> 


它正在工作,只是没有对文本大小进行任何更改。现在菜单项的文本大小更大,而我希望字体大小更小。那么我做错了什么?android:textSize
attributeUTE不应该工作吗?还是有其他方法可以做到这一点?我认为应该从XML而不是java设置文本大小,因为这是与设计相关的事情。有什么建议吗?

或者您可以在“值/样式”项目中为正在使用的主题设置字体大小。在我的例子中,AndroidManifest.xml文件中指示的样式是:

android:theme="@style/AppTheme"
因此,我现在对AppTheme的风格是:

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:textSize">20sp</item>
</style>

20便士
似乎很奇怪,它不适用于该项目,但…

在样式中为您的活动添加“android:ActionMenuTextExearance”项目。xml:

<style name="AppThemeActivity" parent="Theme.AppCompat.Light">
    <item name="android:actionMenuTextAppearance">@style/yourstyle</item>
    ...
</style>

@风格/你的风格
...
将此样式应用于清单中的活动:

<activity 
android:theme="@style/AppThemeActivity"
.../>

好的,这就是我的解决方案,您可以使用SpannableString获取文本,然后通过RelativeSizeSpan(如果您希望文本大小相对于默认值)或AbsoluteSizeSpan(如果您希望手动输入文本大小)更改字体:

public boolean oncreateoptions菜单(菜单菜单){
super.onCreateOptions菜单(菜单);
MenuInflater=getMenuInflater();
充气(右菜单菜单主菜单);
对于(int i=0;i

本例将菜单项文本的大小增加了50%。

因此,很久没有人问过这个问题了,但我喜欢这个解决方案,因为steven Smith的答案会改变每个视图:

将此行添加到NavigationView:

app:itemTextAppearance="@style/MenuItems"
这与风格有关:

<style name="MenuItems" parent="AppTheme">
    <item name="android:textSize">18sp</item>
    <item name="android:fontFamily">sans-serif-light</item>
</style>

18便士
无衬线灯

将自定义字体大小添加到样式xml文件中,如下面的代码行所示

此后

<style name="menu_text_style" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Menu">
    <item name="android:textSize">16sp</item>
    <item name="android:textColor">@color/tab_default_color</item>
    <item name="android:textAllCaps">false</item>
</style>

在旧API上运行良好:

style.xml中:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="actionMenuTextAppearance">@style/ActionMenuTextAppearance</item>
    <item name="android:actionMenuTextAppearance">@style/ActionMenuTextAppearance</item>
</style>

<style name="ActionMenuTextAppearance" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu">
    <item name="android:textSize">16sp</item>
    <item name="android:textColor">#1a1a1a</item>
</style>
<activity
        android:name=".MainActivity"
        android:theme="@style/AppTheme"
        />

@样式/操作菜单文本外观
@样式/操作菜单文本外观
16便士
#1A1A
在您的清单中

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="actionMenuTextAppearance">@style/ActionMenuTextAppearance</item>
    <item name="android:actionMenuTextAppearance">@style/ActionMenuTextAppearance</item>
</style>

<style name="ActionMenuTextAppearance" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu">
    <item name="android:textSize">16sp</item>
    <item name="android:textColor">#1a1a1a</item>
</style>
<activity
        android:name=".MainActivity"
        android:theme="@style/AppTheme"
        />


15便士
#868784
navigationView.setItemTextAppearance(R.style.RobotoTextViewStyle);

您是否尝试过在
android:textSize=“
标记中使用
dp
px
?@SalmanKhakwani:尝试过,但不起作用。TextView:(这就是问题所在:它会改变每个视图。大多数程序员希望文本大小根据屏幕大小/密度而变化。这就是我的意思,我的解决方案不会改变每个视图。我的意思是,您的解决方案不是与屏幕大小/密度无关的。我需要一种方法,使菜单项随着屏幕大小而增长。@FractalBob SP和DP是屏幕独立。如果您希望在百分比中具有相同的大小,则应使用百分比。但不建议这样做。@FractalBob,如果sp/dp不按您的要求进行操作,则您要做的事情将非常困难,因为您不知道大小(以像素为单位)你的目标是直到布局出现。我认为大多数程序员希望字体在屏幕上显示相同的物理大小,而不管它显示在屏幕上的像素大小/分辨率。这就是dp/sp的目的。不——它不会改变每个文本视图——它只会改变使用AppTheme的文本视图。你可以自由定义不同的样式和字体大小/颜色/字体,并根据需要应用它。
<style name="RobotoTextViewStyleEn" parent="android:Widget.TextView">
    <item name="android:textSize">15sp</item>
    <item name="android:textColor">#868784</item>
</style>

navigationView.setItemTextAppearance(R.style.RobotoTextViewStyle);