通过xml文件定义菜单,并在Activity中引用菜单资源,并为菜单项绑定监听器,实现为TextView设置各种属性。
上下文菜单的xml资源文件,context.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
>
<group
android:checkableBehavior="single"
>
<item android:id="@+id/red"
android:title="@string/red_title"
android:alphabeticShortcut="r"
></item>
<item android:id="@+id/green"
android:title="@string/green_title"
android:alphabeticShortcut="g"
></item>
<item android:id="@+id/blue"
android:title="@string/blue_title"
android:alphabeticShortcut="b"
></item>
</group>
</menu>
菜单项资源文件,my_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:title="@string/font_size"
android:icon="@drawable/font"
>
<menu>
<!-- 定义一组菜单选项 -->
<group
android:checkableBehavior="single"
>
<item
android:id="@+id/font_10"
android:title="@string/font_10"
></item>
<item
android:id="@+id/font_12"
android:title="@string/font_12"
></item>
<item
android:id="@+id/font_14"
android:title="@string/font_14"
></item>
<item
android:id="@+id/font_16"
android:title="@string/font_16"
></item>
<item
android:id="@+id/font_18"
android:title="@string/font_18"
></item>
</group>
</menu>
</item>
<!-- 定义一个普通菜单项 -->
<item
android:id="@+id/plain_item"
android:title="@string/plain_item"
/>
<item
android:id="@+id/font_color"
android:title="@string/font_color"
android:icon="@drawable/color"
>
<menu>
<!-- 定义一组允许复选的菜单项 -->
<group android:checkableBehavior="single">
<item
android:id="@+id/red"
android:title="@string/red_title"
/>
<item
android:id="@+id/green"
android:title="@string/green_title"
/>
<item
android:id="@id/blue"
android:title="@string/blue_title"
/>
</group>
</menu>
</item>
</menu>
Activity代码:
package com.example.menurestest;
import android.os.Bundle;
public class MenuResTest extends Activity {
private TextView txt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu_res_test);
txt=(TextView)findViewById(R.id.txt);
//为文本框注册上下文菜单
registerForContextMenu(txt);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//添加菜单资源的方法一
getMenuInflater().inflate(R.menu.my_menu, menu);
return true;
}
//每次 创建上下文菜单时都会触发该方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
//添加菜单资源的方法二
MenuInflater inflater=new MenuInflater(this);
inflater.inflate(R.menu.context, menu);
menu.setHeaderIcon(R.drawable.tools);
menu.setHeaderTitle("请选择背景色");
menu.setGroupCheckable(1, true, true);
}
//上下文菜单项被单击时触发该方法
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()){
case R.id.red:
item.setChecked(true);
txt.setBackgroundColor(Color.RED);
break;
case R.id.green:
item.setChecked(true);
txt.setBackgroundColor(Color.GREEN);
break;
case R.id.blue:
item.setChecked(true);
txt.setBackgroundResource(Color.BLUE);
break;
}
return super.onContextItemSelected(item);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()){
case R.id.font_10:
item.setChecked(true);
txt.setTextSize(10*2);
break;
case R.id.font_12:
item.setChecked(true);
txt.setTextSize(12*2);
break;
case R.id.font_14:
item.setChecked(true);
txt.setTextSize(14*2);
break;
case R.id.font_16:
item.setChecked(true);
txt.setTextSize(16*2);
break;
case R.id.font_18:
txt.setTextSize(18*2);
item.setChecked(true);item.setChecked(true);
break;
case R.id.red:
txt.setTextColor(Color.RED);
item.setChecked(true);
break;
case R.id.blue:
txt.setTextColor(Color.BLUE);
item.setChecked(true);
break;
case R.id.green:
item.setChecked(true);
txt.setTextColor(R.color.green);
break;
case R.id.plain_item:
Toast.makeText(MenuResTest.this, "您单击了普通菜单", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
运行结果:


本文详细介绍了如何通过XML文件定义菜单,并在Activity中引用菜单资源,实现为TextView设置多种属性,包括字体大小、颜色等。同时,文章还展示了如何为TextView注册上下文菜单,并为菜单项绑定监听器,以实现用户交互。

697

被折叠的 条评论
为什么被折叠?



