如何移动微调器下拉菜单以便看到所选择的选项?

时间:2016-01-28 17:56:35

标签: java android xml android-spinner

我正在使用微调器,并在所有选项中填充了下拉菜单。我遇到的问题是,当出现下拉菜单时,它会阻止当前选择的内容。

这是一张展示的图片和我的代码:

Shows blocking spinner

 if(field.getType().equalsIgnoreCase("select"))
            {
                CSSelect select = (CSSelect) field;

                LinearLayout ll = new LinearLayout(this);
                final Spinner s = new Spinner(this);

                TextView t = new TextView(this);
                t.setText("▼");
                t.setTextSize(12);
                t.setBackgroundResource(R.drawable.spinnerbg);
                t.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        s.performClick();
                    }
                });

                LinearLayout.LayoutParams slp = new LinearLayout.LayoutParams(400, LinearLayout.LayoutParams.WRAP_CONTENT);
                s.setLayoutParams(slp);

                ll.addView(s);
                ll.addView(t);

                s.setBackgroundResource(R.drawable.spinnerbg);

                List<String> list = new ArrayList<String>();

                JSONArray choices = select.getChoices();

                for(int j = 0; j < choices.length(); j++)
                {
                    JSONObject jObj = choices.getJSONObject(j);
                    String st = jObj.getString("text");
                    list.add(st);
                }

                ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                        R.layout.spinner_item, list);
                dataAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
                s.setAdapter(dataAdapter);

                rscroll.addView(ll, lp);
            }

Spinner下拉项目xml:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textSize="12dp"
android:textColor="#000000"/>

Spinner item xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:textColor="#000000"

/>

我如何从上面的A到B?我用什么代码移动下面的下拉菜单?

2 个答案:

答案 0 :(得分:2)

将微调器模式从对话框设置为下拉列表:

 <Spinner 
        android:id="@+id/tv_power_settings_type_spinner" 
        style="@android:style/Widget.Spinner"
        android:spinnerMode="dropdown"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:popupBackground="@color/black"/>

使用代码执行此操作:

new Spinner(this, Spinner.MODE_DROPDOWN)

答案 1 :(得分:2)

只需在XML中将以下属性添加到Spinner:

机器人:overlapAnchor = “假”