如何在微调器中添加默认文本?

时间:2014-11-29 05:37:32

标签: android android-spinner

我是android的新手,我知道微调器的访问权限,但我想在微调器中添加默认文本,并希望设置如下图所示,任何人都可以帮助我,

enter image description here

    final String[] items = new String[] {"One", "Two", "Three"};
    final ArrayAdapter<String> adapter123 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_dropdown_item, items);

    sp3.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View w) {
              new AlertDialog.Builder(RegistrationForm.this)
              .setTitle("the prompt")
              .setAdapter(adapter123, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {

                  dialog.dismiss();
                }
              }).create().show();
            }
    });

5 个答案:

答案 0 :(得分:3)

我对您的案例的建议是使用Button初始设置文字并将gravity not layout_gravity )设置为left|center_vertical,而不是打开AlertDialog打开一个PopupWindow设置Button作为该PopUpWindow的锚点。在PopUpWindow ListViewOnItemClick<Button android:id="@+id/propertyBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="@dimen/dp_4" android:background="@drawable/property_btn_large" android:ellipsize="marquee" android:gravity="left|center_vertical" android:marqueeRepeatLimit="marquee_forever" android:minHeight="0dp" android:minWidth="0dp" android:onClick="showPropertyPopUp" android:paddingLeft="42dp" android:paddingRight="22dp" android:shadowColor="@android:color/white" android:shadowDx="1" android:shadowDy="1" android:shadowRadius="1" android:text="@string/select_property" /> 使用setText(java.lang.CharSequence)

在该按钮中使用选定值更改文字

代码段

该按钮的

XML

PopUpWindow

在该按钮单击

中打开//don't forget to initialize that button in onCreate(...) public void showPropertyPopUp(View v) { propertyList = dbHelper.getAllProperties(); dbHelper.closeDB(); if(propertyList != null && propertyList.size() > 0) { LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View popUpView = inflater.inflate(R.layout.pop_up, null, false); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.select_dropdown); popupWindowProperty = new PopupWindow(popUpView, propertyBtn.getWidth(), 300, true); popupWindowProperty.setContentView(popUpView); popupWindowProperty.setBackgroundDrawable(new BitmapDrawable(getResources(), bitmap)); popupWindowProperty.setOutsideTouchable(true); popupWindowProperty.setFocusable(true); popupWindowProperty.showAsDropDown(propertyBtn, 0, 0); ListView dropdownListView = (ListView) popUpView. findViewById(R.id.dropdownListView); PropertyDropdownAdapter adapter = new PropertyDropdownAdapter( AddIncomeActivity.this, R.layout.row_pop_up_list, propertyList); dropdownListView.setAdapter(adapter); dropdownListView.setOnItemClickListener(this); } } 的Java代码
Button

OnItemClick

PropertyInfo addPropertyInfo = propertyList.get(position); String propertyName = addPropertyInfo.getPropertyName(); propertyBtn.setText(propertyName); popupWindowProperty.dismiss(); 上设置文字的代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/dropdownListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:cacheColorHint="@null"
        android:fadeScrollbars="false" >
    </ListView>

</LinearLayout>

pop_up 布局

{{1}}

点击该按钮的屏幕截图

enter image description here

项目点击ListView后的屏幕截图 enter image description here

答案 1 :(得分:0)

在数组中添加另外一个要在微调器中传递的元素,如果要添加验证,可以在运行时使用 -

进行检查。
if (spnType.getSelectedItemPosition() == 0) {
            View view = spnType.getSelectedView();
              SpinnerView adapter = (SpinnerView) spnType.getAdapter();
            adapter.setError(view, getString(R.string.err_leadtype));
            return false;
        } else {
            strType = arllistType.get(spnType.getSelectedItemPosition()).get(
                    WebServiceResponseParameter.LIST_VALUE);
        }

答案 2 :(得分:0)

您不能这样做,因为您必须创建自定义微调器,或者在单击文本视图时必须将alertdialog显示为操作。

已修改

创建一个数组

String a [] = new String [4] ;
a[0] = "ram";
a[1] = "shyam";
a[2] = "mohan";
a[3] = "krishna";

使用此数组作为listview数据的来源,现在将显示一个动作列表视图,并为listview设置一个监听器,它将为您提供listview中单击项目的位置,

将该位置用于数组[position],让position = 2,然后点击的项目文本将 mohan 将此文本设置为textview的项目。

编辑2:

在其中创建包含listview的自定义对话框。 在listview中设置onItemClickListener。

onCreate  
{
     dayTextView.setText("day");
}

onItemClickListener ()
{
     dayTextView.setText("Sunday");
}

编辑3:

按照本教程进行自定义dilaog:http://rajeshvijayakumar.blogspot.in/2013/04/alert-dialog-dialog-with-item-list.html

答案 3 :(得分:0)

正如Nitish解释的那样,您需要在数组R.array.day_birthdate之上添加默认值。假设您的数组是day_birthdate,然后在您定义的顶部添加day

<string-array name="day_birthdate">
        <item name="0">day</item>
        <item name="1">1</item>
        ...
</string-array>

如果选择了第一个选项,则在Spinner上添加验证,

if (mSpinnerBirthDate.getSelectedItemPosition() == 0) { //where mSpinnerBirthDate is Spinner for Birthdate
//show invalid selection message       
}else{
//get selected value from spinner
}

答案 4 :(得分:0)

在数组中添加另外一个要在spinner中传递的元素,然后在java文件中编写此代码。

String array[]=getResources().getStringArray(R.array.name_Of_array);

ArrayAdapter<String> ad=new ArrayAdapter<String>(this,layoutid, array);
spinner.setAdapter(ad);