将自定义微调器对齐到右侧 - 操作栏compat

时间:2014-04-10 14:45:11

标签: android spinner custom-adapter android-actionbar-compat

我得到了这个自定义微调器我想对齐到操作栏的右侧。默认情况下,它尽可能将其对齐到左侧。因此,我已将自定义微调器的XML更改为包含

android:layout_gravity="right"

但我也试过

     android:layout_alignParentRight="true"
     android:gravity="right"

我无法让它发挥作用。我也试过设置LayoutParams,但没有骰子..

其他大多数问题都在其他堆栈问题中提出,但我还没有找到任何其他可能性。

我的java课程:

private void SetUpSpinner(Menu menu) {

    actionBar = getSupportActionBar();

    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

    actionBar.setNavigationMode(android.support.v7.app.ActionBar.NAVIGATION_MODE_LIST);

    categoryName = new String[]{"All","Bar", "Food"};

    MenuItem item = menu.findItem(R.id.category_spinner_item);
    item.setActionView(R.layout.action_sort);

    spinner = (Spinner) MenuItemCompat.getActionView(item);
    View spinnerView = MenuItemCompat.getActionView(item);

    SpinnerAdapter mSpinnerAdapter = (new SpinnerCustomAdapter(this, R.layout.spinnerrow, categoryName));
    spinner.setAdapter(mSpinnerAdapter);

    actionBar.setListNavigationCallbacks(mSpinnerAdapter, this);

    ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
    layoutParams.gravity = Gravity.RIGHT;
    getSupportActionBar().setCustomView(spinnerView, layoutParams);

}

菜单/ main.xml中

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >

    <item android:id="@+id/action_share"
          android:icon="@drawable/ic_action_share"
          android:title="@string/action_share"
          yourapp:showAsAction="ifRoom"  />

    <item
            android:id="@+id/category_spinner_item"
            android:showAsAction="ifRoom"
            android:actionLayout="@layout/action_sort"  />

</menu>

布局/ action_sort.xml

<?xml version="1.0" encoding="utf-8"?>
<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/category_spinner"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="right"
        />

1 个答案:

答案 0 :(得分:1)

知道了。使用

  

getSupportActionBar()setCustomView(旋转器);

而不是

  

actionBar.setListNavigationCallbacks(mSpinnerAdapter,this);

并使用LayoutParams将重力设置为右侧。它不会接受任何XML重力设置。