情境
假設你有一個Button按下去想要跳出一個條列式的Dialog怎麼寫?
其實這是AlertDialog的一種呈現方式
透過AlertDialog可以輕易操作這樣的介面
程式碼說明
先建立好button在xml上面
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.givemepass.listdialogdemo.MainActivity">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ListDialogDemo"
android:id="@+id/listdialog_button" />
</RelativeLayout>
接著來到java檔案,將這個xml套進去
public class DemoListDialogActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
首先我們先將所有要呈現的item寫在字串陣列裡面
CharSequence[] items = {"item1","item2","item3"};
假設寫好了三個項目, 接著我們建立一個AlertDialog,
然後寫好事件把這三個項目丟進去AlertDialog,
然後在根據按下那個item就以Toast顯示出來
現在再寫入Button按下去的事件,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.listdialog_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDialog();
}
});
}
則會跳出我們做好的這個List Dialog,
private void showDialog(){
new AlertDialog.Builder(MainActivity.this)
.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int which) {
switch (which) {
case 0:
Toast.makeText(MainActivity.this, "item1", Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(MainActivity.this, "item2", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(MainActivity.this, "item3", Toast.LENGTH_SHORT).show();
break;
}
}
}).show();
}
由於showDialog裡面的參數我們沒有用到,所以隨便傳入什麼數字都可以,
這樣我們所有的功能都到齊了,
完整程式碼
public class MainActivity extends AppCompatActivity {
private final CharSequence[] items = {"item1","item2","item3"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.listdialog_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDialog();
}
});
}
private void showDialog(){
new AlertDialog.Builder(MainActivity.this)
.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int which) {
switch (which) {
case 0:
Toast.makeText(MainActivity.this, "item1", Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(MainActivity.this, "item2", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(MainActivity.this, "item3", Toast.LENGTH_SHORT).show();
break;
}
}
}).show();
}
}
你就可以看到下面的圖
- 更多AlertDialog用法請參考如何使用AlertDialog