ActionBar 宽度中的两个 Spinner 菜单项

Posted

技术标签:

【中文标题】ActionBar 宽度中的两个 Spinner 菜单项【英文标题】:Two Spinner menu items in ActionBar width 【发布时间】:2013-04-15 01:01:50 【问题描述】:

我在操作栏中手动构建了两个微调器,首先在 main.xml 文件中创建了两个菜单项。随着线

cSpinner.setAdapter( ArrayAdapter.createFromResource( this,
            R.array.category_data,
            android.R.layout.simple_spinner_dropdown_item )
            );

我为他们设置了数组资源。 这些东西确实有效,但问题是,左侧微调器资源字符串太大,以至于只能看到右侧微调器的一小部分。

我尝试过cSpinner.setLayoutParams(new Spinner.LayoutParams(60, 20)); 或'

ViewGroup.LayoutParams params = pView.getLayoutParams();
         params.width = 100;
            cspinner.setLayoutParams(params);

但它们都不起作用。第二个甚至让程序崩溃。 您现在知道如何解决此问题的提示了吗?

【问题讨论】:

尝试在微调器的布局文件中设置值。 这两个微调器实际上并不是 layout.xml 文件中的微调器,它们是 menu.xml 中的两个菜单项,因此我无法为它们设置值。 【参考方案1】:

为此,您必须在 ActionBar 中添加自定义布局,如下所示


代码在这里

public class MainActivity extends Activity 

    final String[] choices =  "Android", "ios", "RIM" ;

    private Spinner Spin1;
    private Spinner Spin2;

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                MainActivity.this, android.R.layout.simple_dropdown_item_1line,
                choices);
        final ActionBar actionBar = getActionBar();
        actionBar.setCustomView(R.layout.actionbar_item);
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setDisplayShowCustomEnabled(true);
        actionBar.setDisplayUseLogoEnabled(false);
        actionBar.setDisplayShowHomeEnabled(false);

        Spin1 = (Spinner) findViewById(R.id.spinner1);
        Spin2 = (Spinner) findViewById(R.id.spinner2);

        Spin1.setAdapter(adapter);
        Spin2.setAdapter(adapter);
    



actionbar_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:gravity="center"
android:orientation="horizontal"
android:weightSum="5" >

<ImageView
    android:id="@+id/imageView1"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/textView1"
    android:layout_
    android:layout_
    android:layout_weight="2"
    android:text="my App name"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="#000000" />

<Spinner
    android:id="@+id/spinner1"
    android:layout_
    android:layout_
    android:layout_weight="1" />

<Spinner
    android:id="@+id/spinner2"
    android:layout_
    android:layout_
    android:layout_weight="1" />

</LinearLayout>

【讨论】:

谢谢你,这很完美,正是我要找的东西。 不明白为什么 actionBar.setCustomView(R.layout.actionbar_item);在此之前你可以使用 setContentView(R.layout.activity_main);

以上是关于ActionBar 宽度中的两个 Spinner 菜单项的主要内容,如果未能解决你的问题,请参考以下文章

android 中如何设置Spinner点击后弹出的下拉列表的宽度样式

TabLayout 中的选项卡没有填满整个 ActionBar

Kivy Spinner - 值大小

android spinner怎么用

Android:两个 Spinner onItemSelected()

如何修改spinner控件的样式