Android:工具栏中的自定义菜单

时间:2016-08-08 02:25:30

标签: android

目前,我的工具栏上附有一个微调菜单。

toolbar_spinner_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/overview_spinner"
        app:actionViewClass="android.widget.Spinner"
        app:showAsAction="always"
        android:title="" />
</menu>

我通过调用

夸大了片段中的菜单

AFragment.java

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.toolbar_spinner_menu, menu);

    final int[] previousSelection = {0};

    final MenuItem item = menu.findItem(R.id.overview_spinner);
    final Spinner mSpinner = (Spinner) MenuItemCompat.getActionView(item);

    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_item, SPINNER_LIST);

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mSpinner.setAdapter(adapter);

    mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {

            switch (position) {
                case 0: // Recent
                    break;
                case 1: // Now
                    break;
                default:
                    break;
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });
    super.onCreateOptionsMenu(menu, inflater);
}

R.layout.spinner_item

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinner_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:textColor="#FFFFFF"
    android:textStyle="bold"
    android:gravity="start" />

从微调器中选择项目时,将提示用户从对话框中选择月份和年份。 点击&#34;确定&#34;后,微调器的文字应更新为选择

但是当我尝试使用以下代码块动态更新文本时,这就是我所得到的,正如您所看到的,文本被切断了。

 mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {

                TextView selectedText = (TextView) getActivity().findViewById(R.id.spinner_text);

                switch (position) {
                    case 0: // Recent
                        selectedText.setText("Since 1/8/2016");
                        break;
                    case 1: // Now

enter image description here

我想要实现的目标如同Citymapper的图片说明中所示。

enter image description here

任何提供的帮助都将非常感谢!

2 个答案:

答案 0 :(得分:0)

我认为问题出在微调器项目宽度 ..你的textview从操作栏获得的空间太大而不是空间可用..降低 textsize 或者您可以从操作栏中删除标题,如绿色标题所示。

答案 1 :(得分:0)

通过修改 R.layout.spinner_item 来解决此问题,方法是将gravity更改为从right开始并设置固定layout_width以及一些填充它不会太靠近图标。

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinner_text"
    android:layout_width="150dp"
    android:paddingRight="8dp"
    android:layout_height="wrap_content"
    android:textSize="15sp"
    android:textColor="#FFFFFF"
    android:textStyle="bold"
    android:gravity="right" />