revise ActionBar samples to include an action view using SearchView,
also modify the sub-menu item to something that makes sense and demonstrate how to invalidate the action bar and redraw it Change-Id: I84f5414c74ab47f7657c226daa2334e7e4449e91
This commit is contained in:
@@ -18,7 +18,7 @@
|
|||||||
android:icon="@android:drawable/ic_menu_search"
|
android:icon="@android:drawable/ic_menu_search"
|
||||||
android:title="@string/action_bar_search"
|
android:title="@string/action_bar_search"
|
||||||
android:showAsAction="ifRoom"
|
android:showAsAction="ifRoom"
|
||||||
android:onClick="onSearch" />
|
android:actionViewClass="android.widget.SearchView" />
|
||||||
<item android:id="@+id/action_add"
|
<item android:id="@+id/action_add"
|
||||||
android:icon="@android:drawable/ic_menu_add"
|
android:icon="@android:drawable/ic_menu_add"
|
||||||
android:title="@string/action_bar_add" />
|
android:title="@string/action_bar_add" />
|
||||||
@@ -30,15 +30,19 @@
|
|||||||
android:icon="@android:drawable/ic_menu_share"
|
android:icon="@android:drawable/ic_menu_share"
|
||||||
android:title="@string/action_bar_share"
|
android:title="@string/action_bar_share"
|
||||||
android:showAsAction="ifRoom" />
|
android:showAsAction="ifRoom" />
|
||||||
<item android:id="@+id/action_zoom"
|
<item android:id="@+id/action_sort"
|
||||||
android:icon="@android:drawable/ic_menu_zoom"
|
android:icon="@android:drawable/ic_menu_sort_by_size"
|
||||||
android:title="@string/action_bar_zoom"
|
android:title="@string/action_bar_sort"
|
||||||
android:showAsAction="ifRoom">
|
android:showAsAction="ifRoom">
|
||||||
<menu>
|
<menu>
|
||||||
<item android:id="@+id/action_save"
|
<item android:id="@+id/action_sort_size"
|
||||||
android:icon="@android:drawable/ic_menu_save"
|
android:icon="@android:drawable/ic_menu_sort_by_size"
|
||||||
android:title="@string/action_bar_save"
|
android:title="@string/action_bar_sort_size"
|
||||||
android:showAsAction="ifRoom" />
|
android:onClick="onSort" />
|
||||||
|
<item android:id="@+id/action_sort_alpha"
|
||||||
|
android:icon="@android:drawable/ic_menu_sort_alphabetically"
|
||||||
|
android:title="@string/action_bar_sort_alpha"
|
||||||
|
android:onClick="onSort" />
|
||||||
</menu>
|
</menu>
|
||||||
</item>
|
</item>
|
||||||
</menu>
|
</menu>
|
||||||
|
|||||||
@@ -624,8 +624,9 @@
|
|||||||
<string name="action_bar_add">Add</string>
|
<string name="action_bar_add">Add</string>
|
||||||
<string name="action_bar_edit">Edit</string>
|
<string name="action_bar_edit">Edit</string>
|
||||||
<string name="action_bar_share">Share</string>
|
<string name="action_bar_share">Share</string>
|
||||||
<string name="action_bar_zoom">Zoom</string>
|
<string name="action_bar_sort">Sort</string>
|
||||||
<string name="action_bar_save">Save</string>
|
<string name="action_bar_sort_alpha">Alphabetically</string>
|
||||||
|
<string name="action_bar_sort_size">By size</string>
|
||||||
|
|
||||||
<string name="action_bar_display_options">App/Action Bar/Display Options</string>
|
<string name="action_bar_display_options">App/Action Bar/Display Options</string>
|
||||||
<string name="toggle_home_as_up">DISPLAY_HOME_AS_UP</string>
|
<string name="toggle_home_as_up">DISPLAY_HOME_AS_UP</string>
|
||||||
|
|||||||
@@ -16,9 +16,14 @@
|
|||||||
package com.example.android.apis.app;
|
package com.example.android.apis.app;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
import android.widget.SearchView;
|
||||||
|
import android.widget.SearchView.OnQueryChangeListener;
|
||||||
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.example.android.apis.R;
|
import com.example.android.apis.R;
|
||||||
@@ -29,14 +34,35 @@ import com.example.android.apis.R;
|
|||||||
* menu data itself. If you'd like to see how these things work under the hood, see
|
* menu data itself. If you'd like to see how these things work under the hood, see
|
||||||
* ActionBarMechanics.
|
* ActionBarMechanics.
|
||||||
*/
|
*/
|
||||||
public class ActionBarUsage extends Activity {
|
public class ActionBarUsage extends Activity implements OnQueryChangeListener {
|
||||||
|
TextView mSearchText;
|
||||||
|
int mSortMode = -1;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
mSearchText = new TextView(this);
|
||||||
|
setContentView(mSearchText);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getMenuInflater();
|
||||||
inflater.inflate(R.menu.actions, menu);
|
inflater.inflate(R.menu.actions, menu);
|
||||||
|
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
|
||||||
|
searchView.setOnQueryChangeListener(this);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||||
|
if (mSortMode != -1) {
|
||||||
|
Drawable icon = menu.findItem(mSortMode).getIcon();
|
||||||
|
menu.findItem(R.id.action_sort).setIcon(icon);
|
||||||
|
}
|
||||||
|
return super.onPrepareOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
Toast.makeText(this, "Selected Item: " + item.getTitle(), Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Selected Item: " + item.getTitle(), Toast.LENGTH_SHORT).show();
|
||||||
@@ -46,7 +72,24 @@ public class ActionBarUsage extends Activity {
|
|||||||
// This method is specified as an onClick handler in the menu xml and will
|
// This method is specified as an onClick handler in the menu xml and will
|
||||||
// take precedence over the Activity's onOptionsItemSelected method.
|
// take precedence over the Activity's onOptionsItemSelected method.
|
||||||
// See res/menu/actions.xml for more info.
|
// See res/menu/actions.xml for more info.
|
||||||
public void onSearch(MenuItem item) {
|
public void onSort(MenuItem item) {
|
||||||
Toast.makeText(this, "Searching...", Toast.LENGTH_SHORT).show();
|
mSortMode = item.getItemId();
|
||||||
|
// Request a call to onPrepareOptionsMenu so we can change the sort icon
|
||||||
|
invalidateOptionsMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following callbacks are called for the SearchView.OnQueryChangeListener
|
||||||
|
// For more about using SearchView, see src/.../view/SearchView1.java and SearchView2.java
|
||||||
|
@Override
|
||||||
|
public boolean onQueryTextChanged(String newText) {
|
||||||
|
newText = newText.isEmpty() ? "" : "Query so far: " + newText;
|
||||||
|
mSearchText.setText(newText);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onSubmitQuery(String query) {
|
||||||
|
Toast.makeText(this, "Searching for: " + query + "...", Toast.LENGTH_SHORT).show();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user