为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这个方法触摸屏幕倒是能一直成功触发