安卓:自定义Spinner布局

16

我正在尝试制作一个完全自定义的下拉框。但是在制作弹出当你按下它时的布局时遇到了困难。这是我的适配器代码:

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.my_array, R.layout.spinnertext);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

根据我在文档中阅读到的内容,布局似乎是由以下代码确定的:

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
尽管我每次更改为新的布局后,尝试使用下拉框时应用会失败。我已经尝试查找"android.R.simple_spinner_dropdown_item"的样式以弄清是否可能漏掉了什么。
我尝试过的所有布局都是线性或相对布局,只有一个TextView。
当选择Spinner时,如何使自定义布局弹出?
1个回答

27

在每行设置布局的row.xml(在这种情况下:每行一个图像和文本):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
       android:id="@+id/icon"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:src="@drawable/icon"/>

    <TextView
       android:id="@+id/weekofday"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>
</LinearLayout>

Java:

public class AndroidCustomSpinner extends Activity {

 String[] DayOfWeek = {"Sunday", "Monday", "Tuesday",
   "Wednesday", "Thursday", "Friday", "Saturday"};

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       Spinner mySpinner = (Spinner)findViewById(R.id.spinner);
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
         R.layout.row, R.id.weekofday, DayOfWeek);
       mySpinner.setAdapter(adapter);
   }
}

2
链接坏了吗?我看不到教程。 - alaeri
因此,我添加了链接内容的摘要。请查看我上面的帖子。 - Prexx
忽略链接,答案已经包含了所有需要的细节。非常简单,谢谢。 - zeh
请跟随此链接。这个链接会很有帮助。http://android-er.blogspot.com/2010/12/custom-spinner-with-icon.html - newday
我有另一个问题,很抱歉在评论中留下它,如果我们必须传递不同的数据结构,例如列表而不是字符串数组到适配器,怎么办? - newday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接