博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Material Design遇到的坑
阅读量:6271 次
发布时间:2019-06-22

本文共 2748 字,大约阅读时间需要 9 分钟。

hot3.png

  1. Toolbar使用

    150611_sa2H_2698012.png150521_d8jR_2698012.png

        (1) 默认Toolbar中的title、logo都是居左的,如果要改成居中,只能自定义View放到Toolbar中

   

      (2) 如果Toolbar单独文件且和CoordinatorLayout结合,则layout_scrollFlags必须和CoordinatorLayout在同一个文件中,不能写在Layout中。

      (3) 在Activity设置

Theme.AppCompat.Light.NoActionBar

        不要在Toolbar上设置

android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

    2. Toolbar中Navigation使用   

mToolbar.setNavigationIcon(R.drawable.icon_titlebar_usercenter);

        点击事件处理

mToolbar.setNavigationOnClickListener(NOnClickListener(View.OnClickListener() {    (View v) {        gStartActivity(SettingActivity.)}}))

        上面的方式不好用,不知道什么原因,放在下面代码的前后都不行

setSupportActionBar(mToolbar);

        要使用

public boolean onOptionsItemSelected(MenuItem item) {    if(item.getItemId() == android.R.id.home) {        gStartActivity(SettingActivity.)    }    return super.onOptionsItemSelected(item)}

    3. Toolbar上使用SearchView

   

    如何监听键盘上点击搜索按钮的事件

public boolean onCreateOptionsMenu(Menu menu) {    getMenuInflater().inflate(R.menu.menu)    final SearchView searchView = (SearchView) MenuItemCompat.(menu.findItem(R.id.action_search))    searchView.setOnQueryTextListener(SearchView.OnQueryTextListener() {        @Override        public boolean onQueryTextSubmit(String query) {            Bundle bundle = Bundle()            bundle.putString(SearchActivity.KEY_SEARCH_CONTENT, query)            gStartActivity(SearchActivity.class, bundle)            searchView.clearFocus()        }}

    3. TabLayout和ViewPager

        ViewPager.setAdapter必须在TabLayout.setupWithViewPager前,否则报错

        给Adapter设置数据必须在TabLayout.setupWithViewPager()前,否则TabLayout.getTabCount()返回0

updateTabData(0, 0, 0);mTabLayout.setupWithViewPager(mViewPager);int tabCount = mTabLayout.getTabCount();

        TabLayout的tab切换监听方法,如果使用setupWithViewPager会创建默认的Listener,如果开发者再添加Listenter,会导致点击tab切换时,ViewPager不会切换。坑啊。

setOnTabSelectedListener()public void setupWithViewPager(@NonNull ViewPager viewPager) {    final PagerAdapter adapter = viewPager.getAdapter();    if (adapter == null) {        throw new IllegalArgumentException("ViewPager does not have a PagerAdapter set");    }    // First we'll add Tabs, using the adapter's page titles    setTabsFromPagerAdapter(adapter);    // Now we'll add our page change listener to the ViewPager    viewPager.addOnPageChangeListener(new TabLayoutOnPageChangeListener(this));    // Now we'll add a tab selected listener to set ViewPager's current item    setOnTabSelectedListener(new ViewPagerOnTabSelectedListener(viewPager));    // Make sure we reflect the currently set ViewPager item    if (adapter.getCount() > 0) {        final int curItem = viewPager.getCurrentItem();        if (getSelectedTabPosition() != curItem) {            selectTab(getTabAt(curItem));        }    }}

转载于:https://my.oschina.net/android520/blog/657950

你可能感兴趣的文章
JDK源代码学习系列07----Stack
查看>>
firefox
查看>>
PS批处理的使用
查看>>
七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 【转】
查看>>
Quartz作业调度框架
查看>>
腾讯云下安装 nodejs + 实现 Nginx 反向代理
查看>>
js-权威指南学习笔记13
查看>>
《超级时间整理术》晨读笔记
查看>>
Spring Boot 2.0(二):Spring Boot 2.0尝鲜-动态 Banner
查看>>
Delphi IdTCPClient IdTCPServer 点对点传送文件
查看>>
Delphi中使用ActiveX的一些心得
查看>>
QT5.8.0+MSVC2015安装以及环境配置(不需要安装VS2015)
查看>>
(原創) C/C++的function prototype和header file (C/C++) (C)
查看>>
深入理解JavaScript系列(29):设计模式之装饰者模式
查看>>
程序员的罪与罚
查看>>
SQL*LOADER错误总结
查看>>
SQL日志收缩
查看>>
【转】MySQL Query Cache 小结
查看>>
SVN分支和合并的简单例子
查看>>
PHP实现的封装验证码类
查看>>