对于我的生活,我无法想到这一点。我正在查询数据库中的列表,并将该列表传递给AlertDialog以获取用户输入。我目前正在使用simple_spinner_item,数据显示得很好。但是,使用此方法时行太窄,我想更改宽度。我尝试了几种不同的方法:
更改:
android.R.layout.simple_spinner_item
基于列表的布局,如:
android.R.layout.simple_list_item_single_choice
这将是完美的,但列表是空白的!当我单独点击它们时,项目会显示出来。所以这不起作用。
我还尝试使用带有Textview定义的自定义XML文件,并设置这样的下拉资源(文件:db_view_row.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:text=""
android:id="@+id/tvDBViewRow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF0000" />
</LinearLayout>
并在此处引用它:
int[] to = new int[] { android.R.id.db_view_row};
adapterDenomination.setDropDownViewResource(R.layout.db_view_row);
这也不起作用(空白行),虽然我最初使用了一个直的微调器(它不能使用,因为第一个项目是自动选择的)。
以下是原始代码段:
String[] from = new String[] {"denomination_desc" };
int[] to = new int[] { android.R.id.text1 };
cursor.moveToFirst();
SimpleCursorAdapter adapterDenomination = new SimpleCursorAdapter(CoinsScreen.this,
android.R.layout.simple_spinner_item, cursor, from, to );
new AlertDialog.Builder(CoinsScreen.this)
.setTitle("Select Denomination")
.setAdapter(adapterDenomination, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
(...)
谢谢!
答案 0 :(得分:0)
自定义XML文件解决方案应该有效,但可能是由于指向了错误的id。
你有:
int[] to = new int[] { android.R.id.db_view_row};
adapterDenomination.setDropDownViewResource(R.layout.db_view_row);
可能应该是:
int[] to = new int[] { R.id.tvDBViewRow };
adapterDenomination.setDropDownViewResource(R.layout.db_view_row);
此外,如果您仍然无法使其工作,请尝试将以下行添加到自定义TextView中:
style="?android:attr/dropDownItemStyle"
android:textAppearance="?android:attr/textAppearanceLargeInverse"
干杯!