如何在ActionBar中移动右侧快速过滤条?

时间:2014-01-28 21:52:22

标签: android android-actionbar actionbarsherlock

enter image description here

嗨,我正在使用SherlockActivity,我需要将快速过滤条移到右边(对不起,如果我不是真名)

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我猜你想在ActionBar中附加EditText作为过滤器输入字段。

  1. 定义菜单:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/search"
      android:icon="@android:drawable/search"
      android:actionLayout="@layout/search"
      android:showAsAction="never"
      android:title="@string/about">
    </item>
    </menu>
    
  2. 在onCreateOptionsMenu()方法中为您的项添加操作布局:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       getSupportMenuInflater().inflate(R.menu.actions, menu);
    
        EditText add= (EditText)menu.findItem(R.id.search).getActionView()
                                                       .findViewById(R.id.title);
    
        add.setOnEditorActionListener(this);           
    
       return(super.onCreateOptionsMenu(menu));
    }
    
  3. 定义您的操作布局search.xml:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Word:"
                android:textAppearance="@android:style/TextAppearance.Medium"/>
    
        <EditText
                android:id="@+id/title"
                android:layout_width="100sp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="4dip"
                android:layout_marginTop="4dip"
                android:imeActionId="1337"
                android:imeOptions="actionDone"
                android:inputType="text"/>    
        </LinearLayout>
    
  4. 您的活动/片段应该实现TextView.OnEditorActionListener,或者您可以在onCreateOptionsMenu中将其添加为匿名类:

      @Override
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
         v.getText(); //your input CharSequence to be handled by FilterQueryProvider for example              
      }
    

    这是一个适合你的解决方案吗?