(為了完整呈現原始碼,所以在程式碼的&使用時要拿掉)
1.畫面main.xml加入
@+id/object:為元件的id=object
layout_width=" fill_parent="">layout_hight="wrap_content"為元件的高度=元件高度
drawSelectorOnTop="true" 指定這個下拉選單是否可以顯示在其他選單的上層,只有在多層選單上才會顯示出效果
prompt 指定下拉選單彈出選單選項提示(彈出選單的標題)
2.設定下拉元件的內容
在value下新增一個檔案,檔名為arrays.xml 這個檔案可用來放置像下拉選單的內容
因為是新的檔案,所以要在檔案中放入
<&?xml version="1.0" encoding="utf-8"?>
<&resources>
<&!-- obj下拉內容 -->
<&string-array name="obj">
<&item>男
<&item>女
<&/string-array>
<&/resources>
如果arrays.xml已存在,則只要加入<&string-array>段就可以了
3.程式 xxx.java加入
(外層)Spinner obj;
(外層)
private void initLayout(){
obj = (Spinner)findViewById(R.id.obj);
ArrayAdapter
this, R.array.sexs, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
obj.setAdapter(adp);
}
外層就是指
@Override
public void onCreate的上一層
在外層宣告 obj是Spinner
再設定一個自訂函數initLayout 用來初始化元件
obj = (Spinner)findViewById(R.id.obj); 指定程式中的obj為畫面上的Spinner
設定adapter(接口) 參考備註1 用來連結資料到下拉選單中
ArrayAdapter
this, R.array.obj, android.R.layout.simple_spinner_item);
這裏使用的是陣列型的接口.接回名稱訂為adp. 裏面包含三個參數
參數1是這個Activity本身(用this 表示)
參數2是資料來源也就是在步驟2中設定的資料。 R.array.obj 中的obj就是在步驟2中設定的name="obj"
參數3是傳入的陣列。simple_spinner_item為Android陣列所內建的預設下拉選單選項格式
setDropDownViewResource 為設定資源到下拉選單中
obj.setAdapter(adp);設定下拉元件的接口
最後在onCreate中加入執行initLayout();就可以了
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initLayout(); <-- 這一行
}
執行一下程式就可以看到效果了
備註1
在android中並不允許直接將字串陣列套用在介面元件中。介面選單的項目,都必預透過Adapter來連結。書上稱Adapter為接口。加了adapter主要是保持程式的使用彈性。
adapter有分為很多種
ArrayAdapter 讀入程式中已宣告的陣列,並轉換成介面元件看的懂的接回元件
SimpleAdapter 從XML文字字串檔讀入陣列
CursorAdapter 從ContentProvider讀入陣列.主要和 DB有關。像讀入通訊錄之類的
沒有留言:
張貼留言