我是android的新手,我知道微调器的访问权限,但我想在微调器中添加默认文本,并希望设置如下图所示,任何人都可以帮助我,
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();
}
});
答案 0 :(得分:3)
我对您的案例的建议是使用Button
初始设置文字并将gravity
( not layout_gravity )设置为left|center_vertical
,而不是打开AlertDialog
打开一个PopupWindow
设置Button作为该PopUpWindow的锚点。在PopUpWindow
ListView
中OnItemClick
和<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}}
点击该按钮的屏幕截图
项目点击ListView后的屏幕截图
答案 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);