我已經在我的android項目中實現了ActionBarSherlock
,沒有任何問題。我現在正在嘗試將一個search widget
添加到ActionBar併成功完成。現在,我想讓Searchview
在展開時從右側滑入,在摺疊時從右側滑入。我有兩個XML動畫,我相信允許我這樣做。SearchView在ActionBarSherlock中的崩潰動畫
search_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="1000"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
search_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="700"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="100%"
android:toYDelta="0%" />
</set>
他們被稱爲內SherlockFragmentActivity
public boolean onCreateOptionsMenu(Menu menu) {
...
final SearchView searchView = new SearchView(this.getSupportActionBar().getThemedContext());
final Animation in = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.search_in);
final Animation out = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.search_out);
out.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationEnd(Animation animation) {
searchView.setIconified(true);
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
});
menu.add("Search")
.setIcon(android.R.drawable.ic_menu_search)
.setActionView(searchView)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
final MenuItem searchMenuItem = menu.getItem(0);
searchView.setQueryHint(getResources().getText(R.string.searchHint));
searchView.setIconifiedByDefault(true);
searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean queryTextFocused) {
if(!queryTextFocused){
searchView.startAnimation(out);
searchMenuItem.collapseActionView();
}
else
searchView.startAnimation(in);
}
});
return super.onCreateOptionsMenu(menu);
}//end onCreateOptionsMenu
}
這是現在的樣子(因爲我不能形成張貼圖像尚未...):
http://i194.photobucket.com/albums/z31/raitono/SearchviewCollapseProblem_zpsefee50e9.gif
的search_in
動畫作品時,精美的圖標被竊聽和search_out
作品以及被按下後退硬件密鑰時。當我嘗試通過小X摺疊搜索視圖時,我遇到了一個障礙。看起來Searchview在動畫被調用之前崩潰了,我不知道該怎麼做。我也試過searchView.onActionViewCollapsed()
,但那沒什麼好處。我的猜測是,我需要以某種方式攔截按下X時所做的調用並首先執行動畫。
我試圖支持低至2.3.5的設備。任何幫助,這將不勝感激。
更新:無論如何檢測何時點擊小的「X」?這將解決我的問題。我一直在谷歌搜索,但一直沒有找到任何東西。
試圖改變你的'search_out.xml'作爲'<翻譯 機器人:時間= 「1000」 機器人:fromXDelta = 「0%」 機器人:fromYDelta = 「0%」 android:toXDelta =「200%」 android:toYDelta =「0%」/>' – GrIsHu 2013-03-01 07:46:33
當我做出這個改變時,它採取了同樣的方式。唯一明顯的區別是圖標移動較慢。 – Bpainter 2013-03-01 15:33:28
我最近改變了我是如何做到這一點的。我在操作欄中使用了一個帶有編輯文本的自定義視圖。然後,我可以通過點擊'X'來解決問題,但現在它不起作用,爲什麼我使用後退按鈕。 – Bpainter 2013-05-30 04:02:48