>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 25252 个阅读者 刷新本主题
 * 贴子主题:  Android Action Bar 自定义View 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2020-03-31 19:32:26     消息  查看  搜索  好友  邮件  复制  引用

    在Action Bar中加入自定义View. 先看效果:

    点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

     actionbar自定义view的布局文件action_bar.xml, 此处可以任意发挥, 实现脑海中的自定义View.
<?xml version="1.0" encoding="utf-8"?>

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

    android:layout_width="wrap_content"

    android:layout_height="match_parent"

    android:gravity="center_vertical"

    android:orientation="horizontal">

    <TextView

        android:id="@+id/action_bar_title"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:textColor="#EEA9B8"

        android:text="@string/action_bar_title" />

    <Spinner

        android:id="@+id/action_bar_spinner"

        android:layout_width="wrap_content"

        android:layout_height="match_parent" >

    </Spinner>

</LinearLayout>

         上边的自定义View里面我用了个Spinner, 那Spinner的Item的布局, 借用了之前抽屉导航Item的布局drawer_item.xml

<?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:gravity="center_vertical"

    android:orientation="horizontal" >

    <ImageView

        android:id="@+id/drawer_img"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"/>

    <TextView

        android:id="@+id/drawer_title"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"/>

</LinearLayout>  

        布局准备好了, 接下来就是在Activity里面写一些.

  首先是onCreate()方法里面准备一下.

/** action_bar添加自定义view */

View actionbarLayout = LayoutInflater.from(this).inflate(R.layout.action_bar, null);

mActionbarSpinne = (Spinner) actionbarLayout.findViewById(R.id.action_bar_spinner);

//setAdapter可以根据具体情况, 此处不必深究.

mActionbarSpinne.setAdapter(new SimpleAdapter(this,

        getDrawerItems(true), R.layout.drawer_item, new String[] {

                "drawer_img", "drawer_title" }, new int[] {

                R.id.drawer_img, R.id.drawer_title }));

mActionbarSpinne.setOnItemSelectedListener(new SpinnerItemSelectedListener());

//使自定义的普通View能在title栏显示, actionBar.setCustomView能起作用.

actionBar.setDisplayShowCustomEnabled(true);

actionBar.setCustomView(actionbarLayout);
  然后Spinner Item选中时, 加个Listener

/**

* 监听action_bar的spinner item选择事件

*/


private class SpinnerItemSelectedListener implements OnItemSelectedListener {

    @Override

    public void onItemSelected(AdapterView<?> arg0, View view, int position,

            long arg3) {

        selectItem(view, position, MESSAGE_SPINNER_ITEM);

    }

    @Override

    public void onNothingSelected(AdapterView<?> arg0) {}

}

  Listener的selectItem()细节如下

         if (messageId == MESSAGE_SPINNER_ITEM) {

            if (position != 0) {

                TextView title = (TextView) view.findViewById(R.id.drawer_title);

                String cityName = title.getText().toString();

                this.cityInput.setText(cityName);

            }

        }  

       至此, 可以根据具体情况在Action bar上面自定义View

              

----------------------------
原文链接:https://blog.51cto.com/lichen/1214291

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-04-18 16:59:11 重新编辑]
  Java面向对象编程-->Swing组件(上)
  JavaWeb开发-->使用Session(Ⅱ)
  JSP与Hibernate开发-->JPA API的高级用法
  Java网络编程-->Java反射机制
  精通Spring-->Vue Router路由管理器
  Vue3开发-->通过Vuex进行状态管理
  浅析Android的通知系统
  Android多线程及异步处理问题
  Android 安装实战
  Android网络开发-创建请求队列
  Android 使用SQLite数据库
  在Window中下载和安装Android源代码
  Android平台概述
  Android多线程及异步处理问题
  Android ListView滑动加载
  Android性能优化:Android UI渲染机制
  Android性能优化:布局渲染流程及优化
  Android 架构
  Android ListView与SQLite综合使用(水果商品展示案例)
  Android_实现商品详情的展示页及布局
  RecyclerView顶部阴影透明度渐变效果
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。