android - ActionBar 宽度中的两个 Spinner 菜单项

标签 android width android-actionbar spinner menuitem

我通过在 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);

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

最佳答案

为此,您必须像下面这样在 ActionBar 中添加自定义布局

enter image description here

enter image description here


代码在这里

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_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="5" >

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:src="@drawable/ic_launcher" />

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

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

<Spinner
    android:id="@+id/spinner2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

</LinearLayout>

关于android - ActionBar 宽度中的两个 Spinner 菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16141824/

相关文章:

android - 如何在不同的移动平台上以同样的方式展示内容?

android - 谷歌地图应用程序不显示 map

css - 没有父元素的 100% 宽度

android - 如何更新状态栏颜色并使其在抽屉上透明

Android Sherlock 操作栏兼容性问题

android - 在 ActionBar-PullToRefresh 库中更改加载屏幕的文本

android.intent.action.SCREEN_ON 不能用作接收器 Intent 过滤器

android - 纹理/顶点的不同索引数组

image - 如何设置asp.net图像控件的宽度和高度属性

html - 使 Div 宽度响应