我在主要活动中使用以下代码在操作栏中使用简单的菜单项:
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
不应该归功吗?或者还有其他方法吗?我认为文本大小应该是从XML设置而不是从java设置,因为它与设计相关。有什么建议吗?
答案 0 :(得分:8)
添加&#34; android:actionMenuTextAppearance&#34; style.xml中活动的项目:
<style name="AppThemeActivity" parent="Theme.AppCompat.Light">
<item name="android:actionMenuTextAppearance">@style/yourstyle</item>
...
</style>
将此样式应用于您的Manifest中的活动:
<activity
android:theme="@style/AppThemeActivity"
.../>
答案 1 :(得分:5)
好的,这是我的解决方案,您实际上可以使用SpannableString获取文本,然后通过RelativeSizeSpan更改字体(如果您希望文本大小相对于默认值)或通过AbsoluteSizeSpan(如果您想手动输入)文字大小):
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater awesome = getMenuInflater();
awesome.inflate(R.menu.menu_main, menu);
for(int i = 0; i < menu.size(); i++) {
MenuItem item = menu.getItem(i);
SpannableString spanString = new SpannableString(menu.getItem(i).getTitle().toString());
int end = spanString.length();
spanString.setSpan(new RelativeSizeSpan(1.5f), 0, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
item.setTitle(spanString);
}
return true;
}
此示例将菜单项文本的大小增加50%。
答案 2 :(得分:3)
所以这已经有很长一段时间了,但我喜欢这个解决方案,因为史蒂文史密斯的回答改变了每一个观点:
将此行添加到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>
答案 3 :(得分:3)
将这个底部代码行添加到样式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>
必须&#34; menu_text_style&#34;添加到您的NavigationView
app:itemTextAppearance="@style/menu_text_style"
答案 4 :(得分:1)
在旧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"
/>
答案 5 :(得分:0)
或者,您可以在正在使用的主题的值/样式项中设置字体大小。在我的例子中,AndroidManifest.xml文件中指示的样式是:
android:theme="@style/AppTheme"
所以Apptheme的风格现在是:
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:textSize">20sp</item>
</style>
虽然看起来很奇怪但它不适用于该项目......
答案 6 :(得分:-1)
select account, max(next_date)
from (select t.*,
lead(date) over (partition by account order by date) as next_date
from t
) t
where inventory = 5
group by account;