当前位置:首页 » 安卓系统 » androidxmlmenu

androidxmlmenu

发布时间: 2024-10-21 22:00:35

1. android menu 怎么得到item

android 中的menu一般是指上下文菜单或者是选项菜单

其中上选项菜单是可以在布局中res下的menu中在xml布局中写好布局来的然后通过java代码中的onCreateOptionsMenu来加载选项菜单,android4.4高级版本后是自动把菜单加载到标题栏上的,而不是低版本的按下menu键才显是出来的,上下文菜单是是通过onCreateContextMenu这个方法来注册上下文菜单的

下面讲讲如何获取menu中的item

获取上下文菜单的item其实就是当单机选项菜单时会触发这个方法

(MenuItemmi){
//判断单击的是哪个菜单项,并针对性的作出响应。
switch(mi.getItemId()){
caseFONT_RED:
title.setTextColor(Color.RED);
break;
caseFONT_GREEN:
title.setTextColor(Color.GREEN);
break;
caseFONT_BLUE:
title.setTextColor(Color.BLUE);
break;
caseMENU1:
createdialog();
break;
}
returntrue;
}

获取选项菜单的item其实就是当单击选项菜单时会触发这个方法

(intfeatureId,MenuItemitem){
//利用switch根据ItemId区分点击的是哪个菜单以便正确响应用户操作
MenuItemtemp=item;
switch(item.getItemId()){
caseR.id.rename:
createdialog();
break;
caseR.id.red:
title.setTextColor(Color.RED);
break;
caseR.id.green:
title.setTextColor(Color.GREEN);
break;
caseR.id.blue:
title.setTextColor(Color.BLUE);
break;
// caseR.id.choose_color:
// createpopupmenu(temp);
// break;
}
returnsuper.onMenuItemSelected(featureId,item);
}

2. Android基础知识

一、activity

1.一个activity就是一个类,继承activity;

2.需要复写onCreate()方法;

3.每一个activity都需要在AndroidMainfest.xml清单上进行配置;

4.为activity添加必要的控件。

二、布局

线性布局:LinearLayout

1.填满父空间:fill_parent、match_parent

2.文本多大空间就有多大:warp_content

3.文字对齐方式:gravity

4.占屏幕的比例:layout_weight="1"  水平方向,则width=0,垂直方向,则height=0

5.一行显示,空间不够会省略:singleLine="ture"  false会换行

6.背景:background="#ffffff"

7.水平布局:orientation="horizontal"

垂直布局:orientation="vertivcal"

表格布局:TableLayout

1.内边距:padding

2.外边距:marginLeft\Start、Right\End、Top、Bottom

三、RelativeLayout相对布局

layout_above 将该控件的底部置于给定ID控件之上

layout_below 将该控件的顶部置于给定ID控件之下

layout_toLeftOf 将该控件的右边缘和给定ID控件的左边缘对齐

layout_toRightOf 将该控件的左边缘和给定ID控件的右边缘对齐

layout_alignBaseline 该控件的baseline和给定ID的控件的Baseline对齐

layout_alignBottom 该控件的底部边缘和给定ID的控件的底部边缘对齐

layout_alignLeft 该控件的左边缘和给定ID的控件的左边缘对齐

layout_alignRight 该控件的右边缘和给定ID的控件的右边缘对齐

layout_alignTop 该控件的顶部边缘和给定ID的控件的顶部边缘对齐

layout_alignparentBottom 如果该值为true,则该控件的底部和父控件的底部对齐layout_alignParentLeft 如果该值为true,则该控件的左边和父控件的左边对齐

layout_alignParentRight 如果该值为true,则该控件的右边和父控件的右边对齐

layout_alignParentTop 如果该值为true,则该控件的上边和父控件的上边对齐

layout_centerHorizontal 如果该值为true,则该控件将被置于水平方向的中央

layout_centerInParent 如果该值为true,则该控件将被置于父控件水平和垂直方向的中央

layout_centerVertival 如果该值为true,则该控件将被置于垂直方向的中央

四、一个Intent对象包含一组信息

1.Component name

2.Action

3.Data

4.Category

5.Extras

6.Flags

Intent intent = new Intent(this, SecondActivity.class);

startActivity(intent);  //startActivity方法

intent.putExtra("Key", "Value");  //键值对

intent = getIntent();

String value = intent.getStringExtra("Key");    //通过键提取数据

五、初级控件:EditText、TextView、Button

1.获取EditText的值

String value = EditText.getText().toString();

2.将值放到Intent对象中

Intent intent = new Intent();

intent.putExtra("one",value )

intent.setCalss(Activity.this, OtherActivity.class);

3.使用这个Intent对象来启动Otheractivity

Activity.this.startActivity(intent);

4.将监听器的对象绑定到按钮对象上

button.setOnclickListener(new Listener());

5.得到Intent对象当中的值

Intent intent = getIntent();

String value1 = intent.getStringExtra("one");

int value2 = Integer.parseInt(value);

六、其他初级控件使用

①ImageView

②RadioGroup和RadioButton

setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener())

③Checkbox

setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener())

④Menu

1.当客户点击MENU按钮的时候,调用onCreateOptionMenu()方法

public boolean onCreateOptionMenu(Menu menu){

menu.add(0,1,1,R.string.id);

}

2.当客户点击MENU内部的具体某一个选项时,调用onOptionItemSelected()方法

public boolean onOptionItemSelected(MenuItem item){

if(item.getItemId() == 1){

finish();

}

return super.onOptionItemSelected(item);

}

七、Activity的生命周期

1.第一次创建时调用

protected void onCreat(Bundle saveInstanceState);

2.显示出来时调用

protected void onStrat();

3.获得用户焦点时调用(可操作)

protected void onResume();

4.点击弹出第二个Activity时调用

protected void onPause();

5.当第一个Activity不可见时调用

protected void onStop();

6.当返回第一个Activity时调用,代替OnCreate,因为没被销毁

protected void onRestart();

7.当返回第一个Activity时调用(先执行onStop,在执行,因为第二个Activity被销毁,不能返回获取,只能通过onCreat,onStart,onResume再创建)

protected void onDestory();

八、Task

1.Task是存放Activity的Stack栈。当点击启动第二个Activiry时,第一个Activtiy会被压入Stack栈当中,第二个Activity会位于栈的顶部;当返回第一个Activtiy时,第二个Activity会被弹出Stack,第一个Activity会位于栈的顶部,以此类推。

注释:当调用finish()时,当前的Activity会被Destory掉,栈中的Activity会消失。

2.当Activity都从Stack退出后,则就不存在Task。

九、高级控件

①进度条ProgressBar

水平进度条style="?android:attr/progressBarStyleHorizontal"

圆圈进度条style="?android:attr/progressBarStyle"

用户可视的visibility="gone"

②列表ListView

十、其他控件

A.下拉菜单Spinner

1.创建一个ArrayAdapter:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(

this, //指上下文对象

R.array.plant_array, //引用了在文件中定义的String数组

android.R.layout.simple_spinner_item);//用来指定Spinner的样式,可替换自定义

adapter.setDropDownViewResource(

android.R.layout.simple_spinner_dropdown_item);//设置Spinner当中每个条目的样式

2.得到Spinner对象,并设置数据:

spinner=(spinner)findViewById(R.id.spinnerId);

spinner.setAdapter(adapter);

spinner.setPrompt("测试");//标题

3.创建监听器

class SpinnerOnSelectListener implements OnItemSelectedListener{

@override

public void onItemSelected(

AdapterView<?> adapterView,//整个列表对象

View view,//被选中的具体条目对象

int position,//位置

long id){ //id

String selected = adapterView.getItemAtPosition(position).toString();

}

@override

public void onNothingSelected(AdapterView<?> adapterView){

S.o.p("nothingSelected");

}

}

4.绑定监听器

spinner.setOnItemSelectedListener(new SpinnerOnSelectListener());

注:第二种动态设计

1.创建ArrayList对象

List<String> list = new ArrayList<String>();

list.add("test1");

2. 调用方法

ArrayAdapter adapter = new ArrayAdapter(

this, //指上下文对象

R.layout.item, //引用了指定了下拉菜单的自定义布局文件

R.id.textViewId,//id

list);//数据

3.得到Spinner对象,并设置对象

spinner.setAdapter(adapter);

spinner.setPrompt("测试");//标题

3.创建监听器

class SpinnerOnSelectListener implements OnItemSelectedListener{

@override

public void onItemSelected(

AdapterView<?> adapterView,//整个列表对象

View view,//被选中的具体条目对象

int position,//位置

long id){ //id

String selected = adapterView.getItemAtPosition(position).toString();

}

@override

public void onNothingSelected(AdapterView<?> adapterView){

S.o.p("nothingSelected");

}

}

4.绑定监听器

spinner.setOnItemSelectedListener(new SpinnerOnSelectListener());

B.DatePicker和DatePickerDialog

1.声明一个监听器,使用匿名内部类

DatePickerDialog.OnDateSetListener onDateSetListener

= new DatePivkerDialog.OnDateSetListener(){

public void onDateSet(

DatePicker view,

int year,

int monthOfYear,

int dayOfMonth){

S.o.p(year+"-"+motnOfYear+"-"+dayOfMonth)

}

}

2.复写onCreateDialog(int id)方法:

@override

protected Dialog onCreateDialog(int id){

switch(id){

case DATE_PICKER_ID:

return new DatePickerDialog(this,onDateSetListener,2019,11,25);

}

return null;

}

3.使用时调用showDialog()方法

showDialog(DATE_PICKER_ID);

C.AutoCompleteTextView

B.Widget

C.Animatin

十一、实现ContentProvider过程

1.定义一个CONTENT_URI常量

2.定义一个类,继承ContentProvider

3.实现query、insert、update、delete、getType和onCreate方法

4.在AndroidManifest.xml当中进行声明

3. android menu怎样设置item的文字

Android Menu的文字有两种设置方式:

  1. 在 menu.xml中设置。

  2. 在java代码onCreateOptionsMenu中设置。

以下为示例代码:

  1. 在menu.xml中指定title即可

    <item android:id="@+id/menu"
    android:title="文字"/>

  2. 重载onCreateOptionsMenu(Menu menu)方法,并调用API。

    menu.add((int groupId, int itemId, int order, charsequence title) .setIcon(drawable ID)

add()方法的四个参数,依次是:

1、组别,如果不分组的话就写Menu.NONE。

2、Id,这个很重要,Android根据这个Id来确定不同的菜单 。

3、顺序,哪个菜单项在前面由这个参数的大小决定 。

4、文本,菜单项的显示文本。

4. 在android工程中,res目录下又有anim、drawable、layout、menu、raw、values和xml文件夹,分别用来保存

res目录主要是存放资源文件的!
layout 布局 这个就是你经常看到的与用户交互的界面的 xml 文件,就是各个 view 的排列和嵌套,没什 么好说的啦 风格和主题、 风格主要是指 view 的显示风格 ;
anim 一般是设置动画,画资源分为两种,一是实现图片的 translate、scale、rotate、alpha 四种变化。还可以设置 动画的播放特性;另一种是帧动画,逐帧播放设置的资源;
drawable 主要是是存放所使用的图片的!
menu:菜单 菜单即可以从代码中实现也可以在资源文件中配置;
把图像文件放在 res/raw/ 目录下,这样可以避免被自动优化。
values 是用程序人员设置的一些常量的XML文件,便于修改和使用,一般有Strings,colors等

assets 文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像 xml, java 文件被预编译,可以存放一些图片,html,js, css 等文件。

5. 如何给android中的设置菜单中添加一个item

在res下新建menu文件夹,然后新建菜单文件
定义一个xml文件(在menu资源里面),
<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item
android:id="@+id/menu_settings"

android:showAsAction="never"
android:title="设置" />
<item
android:id="@+id/menu_exit"

android:showAsAction="never"
android:title="退出" />

</menu>
(item有多少个,显示就多少个)
在代码里面的onCreateOptionsMenu方法里面把这个xml布局填充进去,代码如下:

MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_settings, menu);

6. 安卓编程怎样自定义menu中的字体大小

一、先到AndroidManifest.xml看看当前的theme是什么:

比如我这里的是AppTheme

[html] view plain
<application
......
android:theme="@style/MyAppTheme" >

二、然后在资源文件的res/values/styles.xml中找到 你的主题:

[html] view plain
<style name="MyAppTheme" parent="@android:style/Theme.Holo.Light">

三、然后在此添加上一个item,name=android:actionMenuTextAppearance,然后引用你自己定义的文字样式,不管是大小还是颜色都可以自己定义

[html] view plain
<style name="MyAppTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionMenuTextAppearance">@style/MyMenuTextStyle</item>
</style>

<style name="MyMenuTextStyle">
<item name="android:textColor">@android:color/red</item>
<item name="android:textSize">16sp</item>
</style>

7. Android中menu菜单中的图片是怎么加进去的

给这个图片按钮添加一个事件, button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(当前Activity.this, 下一个Activity.class);
startActivity(intent);
当前Activity.finish();//关闭当前Activity
}
});
与普通按钮没有什么区别,一个就是有图片的,一个没有嘛,对它做事件都 一样,只不过显示效果不一样。

8. android中的菜单menu可以在屏幕上一直显示吗

不可以,menu是需要触发了menu这个按键才会显示出来。

菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu),以下说的是创建OptionsMenu

一、概述

public boolean onCreateOptionsMenu(Menu menu):使用此方法调用OptionsMenu。

public boolean onOptionsItemSelected(MenuItem item):选中菜单项后发生的动作。

public void onOptionsMenuClosed(Menu menu):菜单关闭后发生的动作。

public boolean onPrepareOptionsMenu(Menu menu):选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。

public boolean onMenuOpened(int featureId, Menu menu):单打开后发生的动作。

二、默认样式

默认样式是在屏幕底部弹出一个菜单,这个菜单我们就叫他选项菜单OptionsMenu,一般情况下,选项菜单最多显示2排每排3个菜单项,这些菜单项有文字有图标,也被称作Icon Menus,如果多于6项,从第六项开始会被隐藏,在第六项会出现一个More里,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded Menus。下面介绍。

1.main.xml

<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextViewandroid:layout_width="wrap_content"
android:layout_height="wrap_content"android:text="请点击Menu键显示选项菜单"
android:id="@+id/TextView02"/>

</LinearLayout>


2。重载onCreateOptionsMenu(Menu menu)方法

重载onCreateOptionsMenu(Menu menu)方法,并在此方法中添加菜单项,最后返回true,如果false,菜单则不会显示。

(Menumenu)

@Override
(Menumenu){
/*
*
*add()方法的四个参数,依次是:
*
*1、组别,如果不分组的话就写Menu.NONE,
*
*2、Id,这个很重要,Android根据这个Id来确定不同的菜单
*
*3、顺序,那个菜单现在在前面由这个参数的大小决定
*
*4、文本,菜单的显示文本
*/

menu.add(Menu.NONE,Menu.FIRST+1,5,"删除").setIcon(

android.R.drawable.ic_menu_delete);

//setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以

//android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的

menu.add(Menu.NONE,Menu.FIRST+2,2,"保存").setIcon(

android.R.drawable.ic_menu_edit);

menu.add(Menu.NONE,Menu.FIRST+3,6,"帮助").setIcon(

android.R.drawable.ic_menu_help);

menu.add(Menu.NONE,Menu.FIRST+4,1,"添加").setIcon(

android.R.drawable.ic_menu_add);

menu.add(Menu.NONE,Menu.FIRST+5,4,"详细").setIcon(

android.R.drawable.ic_menu_info_details);

menu.add(Menu.NONE,Menu.FIRST+6,3,"发送").setIcon(

android.R.drawable.ic_menu_send);

returntrue;

}

3。为菜单项注册事件

使用onOptionsItemSelected(MenuItem item)方法为菜单项注册事件

(MenuItemitem)

@Override
(MenuItemitem){
switch(item.getItemId()){

caseMenu.FIRST+1:

Toast.makeText(this,"删除菜单被点击了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+2:

Toast.makeText(this,"保存菜单被点击了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+3:

Toast.makeText(this,"帮助菜单被点击了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+4:

Toast.makeText(this,"添加菜单被点击了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+5:

Toast.makeText(this,"详细菜单被点击了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+6:

Toast.makeText(this,"发送菜单被点击了",Toast.LENGTH_LONG).show();

break;

}

returnfalse;

}

4.完整代码

packagecom.android.menu;

importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.widget.Toast;

{
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
(Menumenu){
/*
*
*add()方法的四个参数,依次是:
*
*1、组别,如果不分组的话就写Menu.NONE,
*
*2、Id,这个很重要,Android根据这个Id来确定不同的菜单
*
*3、顺序,那个菜单现在在前面由这个参数的大小决定
*
*4、文本,菜单的显示文本
*/

menu.add(Menu.NONE,Menu.FIRST+1,5,"删除").setIcon(

android.R.drawable.ic_menu_delete);

//setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以

//android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的

menu.add(Menu.NONE,Menu.FIRST+2,2,"保存").setIcon(

android.R.drawable.ic_menu_edit);

menu.add(Menu.NONE,Menu.FIRST+3,6,"帮助").setIcon(

android.R.drawable.ic_menu_help);

menu.add(Menu.NONE,Menu.FIRST+4,1,"添加").setIcon(

android.R.drawable.ic_menu_add);

menu.add(Menu.NONE,Menu.FIRST+5,4,"详细").setIcon(

android.R.drawable.ic_menu_info_details);

menu.add(Menu.NONE,Menu.FIRST+6,3,"发送").setIcon(

android.R.drawable.ic_menu_send);

returntrue;

}

@Override
(MenuItemitem){
switch(item.getItemId()){

caseMenu.FIRST+1:

Toast.makeText(this,"删除菜单被点击了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+2:

Toast.makeText(this,"保存菜单被点击了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+3:

Toast.makeText(this,"帮助菜单被点击了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+4:

Toast.makeText(this,"添加菜单被点击了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+5:

Toast.makeText(this,"详细菜单被点击了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+6:

Toast.makeText(this,"发送菜单被点击了",Toast.LENGTH_LONG).show();

break;

}

returnfalse;

}

@Override
publicvoidonOptionsMenuClosed(Menumenu){
Toast.makeText(this,"选项菜单关闭了",Toast.LENGTH_LONG).show();
}

@Override
(Menumenu){
Toast.makeText(this,
"选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单",
Toast.LENGTH_LONG).show();

//如果返回false,此方法就把用户点击menu的动作给消费了,onCreateOptionsMenu方法将不会被调用

returntrue;

}
}

5.运行效果

热点内容
服务器地址和端口怎么登录 发布:2024-10-22 04:23:06 浏览:635
机械师和战神同样配置下哪个最好 发布:2024-10-22 04:17:18 浏览:60
c语言对话框 发布:2024-10-22 04:11:43 浏览:75
java程序源代码 发布:2024-10-22 04:00:44 浏览:111
怎么把驱动编译进内核 发布:2024-10-22 03:58:40 浏览:241
web前端学习编译器 发布:2024-10-22 03:57:59 浏览:628
回溯密码箱密码多少 发布:2024-10-22 03:45:45 浏览:864
复数算法 发布:2024-10-22 03:45:37 浏览:877
mc风云服务器地址 发布:2024-10-22 03:43:31 浏览:46
c读取数据库 发布:2024-10-22 03:39:12 浏览:249