Android学习之menu菜单使用与用户自定义View
2015-03-19 11:50
423 查看
在eclipse中新建一个安卓项目的时候,一般会自带创建一个menu,如果想自定义一个menu的话,在项目res目录下新建一个menu菜单,然后在该目录下新建一个xml文件,系统根目录会自动选择为menu类型;
新建成功后,我们在xml中添加菜单项Item;
回到MainActivity当中,实现菜单创建和菜单选择方法实现;onCreateOptionsMenu和onOptionsItemSelected;
onCreateOptionsMenu和Activity中的onCreate方法类似,获取MenuInflater对象,加载menu类型的main.xml视图文件到menu对象中,这种方法和ListView当中LayoutInflater加载子视图操作很相似!注意return true,表明菜单被调用后会显示出来,否则不会显示;单击模拟器上menu图标,菜单就会显示出来了!默认菜单的样式与当前安卓版本有关
下面看看自定义view,这里做一个新闻详情页的导航条部分,包括返回上一级按钮,文本标题显示和回到主页按钮;单独做一个布局文件title.xml;然后其他布局中利用include来调用这个导航条布局,基本上就实现了通用导航条效果!
由于涉及到返回键,所以在子活动中引入导航条实现按钮功能,主活动中通过意图对象进入子活动;子活动中实现导航按钮功能
完成主活动功能:
主布局文件:
自布局文件:
主活动代码:
子活动代码:
效果图:
新建成功后,我们在xml中添加菜单项Item;
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/add_item" android:title="Add"/> <item android:id="@+id/remove_item" android:title="Remove" /> </menu>
回到MainActivity当中,实现菜单创建和菜单选择方法实现;onCreateOptionsMenu和onOptionsItemSelected;
onCreateOptionsMenu和Activity中的onCreate方法类似,获取MenuInflater对象,加载menu类型的main.xml视图文件到menu对象中,这种方法和ListView当中LayoutInflater加载子视图操作很相似!注意return true,表明菜单被调用后会显示出来,否则不会显示;单击模拟器上menu图标,菜单就会显示出来了!默认菜单的样式与当前安卓版本有关
//创建菜单 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } //选择菜单 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.add_item: Toast.makeText(this, "你点击了添加菜单项按钮", Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this, "你点击了删除菜单项按钮", Toast.LENGTH_SHORT).show(); break; } return true; }
下面看看自定义view,这里做一个新闻详情页的导航条部分,包括返回上一级按钮,文本标题显示和回到主页按钮;单独做一个布局文件title.xml;然后其他布局中利用include来调用这个导航条布局,基本上就实现了通用导航条效果!
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/title_bg" android:orientation="horizontal" > <Button android:id="@+id/title_back" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center" android:background="@drawable/title_back" /> <TextView android:id="@+id/title_text" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="15dp" android:layout_weight="1" android:singleLine="true" android:ellipsize="end" android:text="英国加入亚投行,西方国家效仿,美国阻击战略失败" android:textColor="#fff" /> <Button android:id="@+id/title_index" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center" android:background="@drawable/title_index" /> </LinearLayout>
由于涉及到返回键,所以在子活动中引入导航条实现按钮功能,主活动中通过意图对象进入子活动;子活动中实现导航按钮功能
完成主活动功能:
主布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.menu.MainActivity" > <Button android:id="@+id/enter" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="进入" /> </LinearLayout>
自布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <include layout="@layout/title"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="16sp" android:textStyle="normal" android:layout_marginTop="15dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:lineSpacingExtra="10dp" android:text="中国日报网12月11日电(远达)由中国倡导设立的亚洲基础设施投资银行蓄势待发,不少国家摩拳擦掌、踊跃参与,但也有彷徨徘徊者,有的甚至心生疑忌,视之为对亚太金融格局的挑战,认为亚投行要与世行、亚行分庭抗礼。" /> </LinearLayout>
主活动代码:
package com.example.menu; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Button enter; private Intent intent=null; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ enter= (Button) findViewById(R.id.enter); enter.setOnClickListener(this); } //创建菜单 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } //选择菜单 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.add_item: Toast.makeText(this, "你点击了添加菜单项按钮", Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this, "你点击了删除菜单项按钮", Toast.LENGTH_SHORT).show(); break; } return true; } public void onClick(View v) { if(v.getId()==R.id.enter){ Toast.makeText(this, "进入另一个活动", Toast.LENGTH_SHORT).show(); intent =new Intent(this,SecondActivity.class); startActivity(intent); } } }
子活动代码:
package com.example.menu; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class SecondActivity extends Activity implements OnClickListener{ Button tittle_back,tittle_index; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); initView(); } private void initView(){ tittle_back= (Button) findViewById(R.id.title_back); tittle_index=(Button) findViewById(R.id.title_index); tittle_back.setOnClickListener(this); tittle_index.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.title_back: finish(); break; case R.id.title_index: Intent intent =new Intent(this,MainActivity.class); startActivity(intent); break; } } }
效果图:
相关文章推荐
- android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu
- (转)android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu
- android学习:菜单(Menu)的使用
- android 开发零起步学习笔记(十七):自定义android用户控件,使用回调函数实现自定义事件
- Android客户端之“微服私访”App的系统学习(五)使用Picasso实现轮播图以及使用自定义View实现个人中心页面
- Android进阶学习-使用Canvas自定义简单TextView(1)
- Android进阶学习-使用Canvas自定义ProgressView(3)
- Android进阶学习-使用Canvas自定义ImageTextView(2)
- Animation & Animator使用方法(Mooc Android加薪利器--自定义view 代码学习笔记)
- android 自定义view学习笔记————Paint和Canvas的简单使用
- 自定义android用户控件,使用回调函数实现自定义事件
- android:关于自定义不能滑动的ViewPager后在使用View加载其所在的的布局时报错:Error inflating class view.NoscrollViewPager
- Android中使用自定义的view实现圆形图片的效果
- Android自定义View使用canvas实现轮播图效果
- android自定义view学习笔记1
- Android 自定义viewGroup学习之FlowLayout的实现
- 微软企业库5.0 学习之路——第九步、使用PolicyInjection模块进行AOP—PART4——建立自定义Call Handler实现用户操作日志记录
- android 自定义View学习总结-继承自ViewGroup
- Android学习WebView使用小结
- Android中的Menu(菜单)的三种类型菜单的学习