自对准微调的权利 - 动作条COMPAT权利、动作、COMPAT

由网友(▁失↘恋)分享简介:微调我要对准动作条的右侧,我得到了这个习惯。默认情况下,对齐它作为偏左越好。所以我改变了我的自定义微调的XML,包括 的android:layout_gravity =右 但我也试过 的android:layout_alignParentRight =真     机器人:重力=右 和我只是不能得到它的工作。我也尝试设置...

微调我要对准动作条的右侧,我得到了这个习惯。默认情况下,对齐它作为偏左越好。所以我改变了我的自定义微调的XML,包括

 的android:layout_gravity =右 

但我也试过

 的android:layout_alignParentRight =真     机器人:重力=右 

和我只是不能得到它的工作。我也尝试设置的LayoutParams,但没有骰子..

其中大部分被建议在其他栈的问题,但我一直没能找到任何其他posibilities。

我的Java类:

 私人无效SetUpSpinner(菜单菜单){    动作条= getSupportActionBar();    actionBar.setDisplayShowHomeEnabled(假);    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);    actionBar.setNavigationMode(android.support.v7.app.ActionBar.NAVIGATION_MODE_LIST);    类别名称=新的String [] {全部,酒吧,食品};    菜单项项= menu.findItem(R.id.category_spinner_item);    item.setActionView(R.layout.action_sort);    微调=(微调)MenuItemCompat.getActionView(项目);    查看spinnerView = MenuItemCompat.getActionView(项目);    SpinnerAdapter mSpinnerAdapter =(新SpinnerCustomAdapter(这一点,R.layout.spinnerrow,类别名称));    spinner.setAdapter(mSpinnerAdapter);    actionBar.setListNavigationCallbacks(mSpinnerAdapter,这一点);    ActionBar.LayoutParams的LayoutParams =新ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.MATCH_PARENT);    layoutParams.gravity = Gravity.RIGHT;    getSupportActionBar()setCustomView(spinnerView,的LayoutParams)。} 

菜单/ main.xml中

 <菜单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android      的xmlns:yourapp =htt​​p://schemas.android.com/apk/res-auto>    <项目机器人:ID =@ + ID / action_share          机器人:图标=@绘制/ ic_action_share          机器人:标题=@字符串/ action_share          yourapp:showAsAction =ifRoom/>    <项目            机器人:ID =@ + ID / category_spinner_item            机器人:showAsAction =ifRoom            机器人:actionLayout =@布局/ action_sort/>&所述; /菜单> 

布局/ action_sort.xml

 <?XML版本=1.0编码=UTF-8&GT?;<微调的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android         机器人:ID =@ + ID / category_spinner         机器人:layout_width =WRAP_CONTENT         机器人:layout_height =WRAP_CONTENT         机器人:layout_gravity =右        /> 

解决方案

明白了。使用

  

getSupportActionBar()setCustomView(微调);

而不是

  

actionBar.setListNavigationCallbacks(mSpinnerAdapter,这一点);

和使用的LayoutParams设置重力到右侧。它不会对任何XML重力设置回暖。

I got this custom spinner I want to align to the right side of the actionbar. By default it aligns it as far to the left as possible. So I've changed my custom spinner's XML to include

android:layout_gravity="right"

but I also tried

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

And I just can't get it to work. I also tried setting the LayoutParams, but no dice..

Most of these are being suggested in other stack questions, but I haven't been able to find any other posibilities.

My java class:

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);

}

menu/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>

layout/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"
        />

解决方案

Got it. Use

getSupportActionBar().setCustomView(spinner);

instead of

actionBar.setListNavigationCallbacks(mSpinnerAdapter, this);

and use LayoutParams to set the gravity to the right. It won't pick up on any XML gravity settings.

阅读全文

相关推荐

最新文章