2015-10-16

为searchview(v7)并监听期伸缩/打开

xml定义

 <item
        android:id="@+id/action_search"
        android:orderInCategory="100"
        android:title="@string/action_search"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="always|collapseActionView"
        app:actionViewClass="android.support.v7.widget.SearchView"/>

注意一定要有“|collapseActionView”,否则监听不到

java

public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);searchItem.getActionView();
        MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {
            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                //展开的监听
                return true;
            }

            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {
                 //关闭的监听
                return true;
            }
        });
        return true;
    }

因为使用了v7的包。所以监听要使用兼容器MenuItemCompat设置监听

关于scrollview子控件不能填满scrollview

当你想让一个高度值不足scrollview的子控件fillparent的时候,单独的定义android:layout_height=”fill_parent”是不起作用的,必须加上fillviewport属性,当子控件的高度值大于scrollview的高度时,这个标签就没有任何意义了。加上此标签的话,里面的控件会被强制铺满scrollView

修改APP名与预期不符

遇到一个奇葩问题,使用android studio在AndroidManifest.xml修改app的名字为指定名称时,老修改不了,代码

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="app名字" >
        <activity
            android:name=".Main"
            android:label="act名字"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>

如上,想修改名字为“app名字”但修改不成功,仍然为”act名字”,解决办法是把临近的一个android:label 属性删掉就行了。。。。。如上就是删除掉“ android:label=”act名字” ”这行

onTouchEvent和dispatchTouchEvent

即使重写了onTouchEvent 也无法触发,好像是因为被什么中断了触发,没弄清楚,反正重写dispatchTouchEvent这个方法触摸屏幕倒是能一直成功触发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值