自对准微调的权利 - 动作条COMPAT [英] Align Custom Spinner to the Right - Actionbar compat

查看:117
本文介绍了自对准微调的权利 - 动作条COMPAT的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

微调我要对准动作条的右侧,我得到了这个习惯。默认情况下,对齐它作为偏左越好。所以我改变了我的自定义微调的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.

这篇关于自对准微调的权利 - 动作条COMPAT的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆