前言
最近接到一個需求要實現(xiàn)一個類IOS的底部dialog,當(dāng)時我就要日了狗了,項目上都固定了使用的是Android原生dialog屈尼,現(xiàn)在變成IOS的,得改多少代碼拴孤。脾歧。不過既然人家提了,該實現(xiàn)還是要實現(xiàn)的對吧Q菔臁涨椒!先上個圖:
Sample.gif
實現(xiàn)方式
- 直接修改Android底層的dialog,加上宏控或者其他的標(biāo)志位。當(dāng)然作為一家手機ODM公司蚕冬,這點還是可以做到的免猾,但是沒有公用性了。囤热。
- 重新實現(xiàn)Dialog猎提,我實現(xiàn)的AlerDialog,一是因為Google推薦使用旁蔼,二是如果使用的是 DialogFragment也可以通過onCreateDialog的方式來重寫
實現(xiàn)步驟
其實不想寫這一步的锨苏,因為實現(xiàn)實在是太簡單了一點,只不過要花一定的時間去做棺聊。伞租。
- 截取Builder的方法,因為AlertDialog是通過Builder模式建立的限佩,所以把一些Builder的方法改成自己的需求就行了
- 建立自己的底部的布局葵诈,我建立的是豎型LinearLayout
- 設(shè)置屬性,其實設(shè)置自己需求的屬性就可以了
- 創(chuàng)建Dialog祟同,把布局設(shè)置進(jìn)去作喘,就大功告成了
使用方式
compile 'com.android.actionsheetdialog:actionsheet:1.0.3'
ActionSheetDialog dialog = new ActionSheetDialog.ActionSheetBuilder(MainActivity.this, R.style.ActionSheetDialogBase_SampleStyle)
.setItems(new CharSequence[]{"Item1", "Item2", "Item3"}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "onClick Item: " + which, Toast.LENGTH_SHORT).show();
}
})
.setMessage("************")
.setTitle("電話號碼")
.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "onClick() dialog", Toast.LENGTH_SHORT).show();
}
})
.setCancelable(true)
.create();
dialog.show();
源碼
完整的源碼在GitHub上
這里就不詳細(xì)介紹了,稍微有點多晕城,有問題可以提issue