Bài 16: Dialog và AlertDialog

Lẽ ra đây là bài viết mình hướng dẫn ở từ bài 12 gì đó nhưng vì nhát quá đâm muốn rút ngắn lại series này nên mình bỏ, tuy nhiên thấy nó cũng làm một kiến thức Android thuộc kiểu bassic nên chắc phải thêm vô.Thực ra thì mấy cái này đa phần mọi người tự tìm trên mạng về làm , thôi coi như mình rãnh hơi vậy.

Dialog là gì?

Nếu bạn học bất kì ngôn ngữ nào thì chắc cũng đụng đến thằng Dialog cả rồi đúng không, xưa ở trường học VB hay C# gì đó thì gọi là Box Message còn bên Java thì hay gọi là Dialog.Gọi là gì thì ý nghĩa của nó cũng là show lên một thông báo trên màn hình, và thông báo này sẽ che mờ màn hình, bạn cũng có thể xử lý sự kiện trên Dialog này.

So sánh Dialog với AlertDialog

So sánh Dialog với AlertDialog

Trong Android có nhiều loại dialog mà ngay mình cũng không biết hết đâu mình chỉ hay dùng thằng nào thì hướng dẫn các bạn vậy thôi, cơ bản là mấy thằng này đều tương tự nhau cả thôi nên cũng không cần quan tâm nó nhiều.

Trong bài viết này mình sẽ hướng dẫn các bạn 2 loại Dialog chính trong Android đó là DialogAlertDialog, 2 thằng này same same như nhau tí mình nói rõ hơn giờ bắt đầu tìm hiểu nhé.

Dialog

Đây là loại Dialog mà bạn phải tạo giao diện cho nó bằng xml chứ mặc định nó không có giao diện ngoài cái title, hay nói cách khác bạn phải custom nó từ đầu tới cuối, không giống AlertDialog bạn sẽ thêm được title, message, button…

Bây giờ mình sẽ tạo một thông báo giao diện giống như sau bằng thằng Dialog này nhé, tí nữa bên AlertDialog mình cũng sẽ làm tương tự luôn để bạn thấy sự khác nhau.

Giao diện của Dialog sẽ nhau sau:

Dialog trong Android

Dialog trong Android

Để làm được giao diện như vậy thì bạn phải tạo một layout có giao diện như vậy và sau đó đưa lên Dialog, bởi vì mặc định thằng Dialog này chẳng có giao diện gì cả ngoài cái title thôi.Thế nên bây giờ chúng ta sẽ đi thiết kế layout cho dialog như hình dưới đây:

 

Tạo layout Dialog

Tạo layout Dialog

Còn đây là file layout dialog.xml:


Còn đây là code java khi các bạn muốn tạo Dialog và show nó lên như ảnh bên trên:


Ở trên mình đưa hết vào phương thức showDialog rồi nhé, nên bạn chỉ cần để ý những dòng lệnh ở đó thôi, ở đây ta có:

dialog = new Dialog(MainActivity.this): đây là khởi tạo dialog, bây giờ bạn gọi dialog.show() là cũng được tuy nhiên nó sẽ không có giao diện đâu.

dialog.setTitle(“Thangcode.com”): ở đây bạn sẽ đặt tên tiêu đề cho Dialog nhé, bạn xem ảnh ở trên là thấy rõ à.

dialog.setContentView(R.layout.dialog): đây chính là dòng quan trọng và quyết định đây, chắc bạn không thể nào quên phương thức setContentView() mà bất kì activity nào cũng có để tạo giao diện đó chứ.Ở đây có nghĩa là chúng ta sẽ set giao diện vào dialog, giao diện này bạn đã định nghĩa ở file layout dialog.xml trước đó rồi nhé.

dialog.show(): tất cả đã xong thì bây giờ bạn chỉ cần gọi phương thức show() để dialog hiển thị lên là được, và trong video phía dưới mình sẽ hướng dẫn các bạn các bắt sự kiện nữa chứ ở đây mình chỉ tóm tắt vậy thôi.

Bây giờ sẽ tìm hiểu qua AlertDialog nhé. bạn sẽ thấy được sự khác biệt đó.

AlertDialog

AlertDialog là một kiểu Dialog hay nó cách khác nó là lớp con kế thừa từ Dialog ra, nhưng có thể hiển thị nhiều các Button bên dưới mà chúng ta không cần phải định nghĩa layout cho nó.Ngoài ra bạn muốn hiển thị tiêu đề, nội dung bên trong thì AlertDialog đều hỗ trợ bạn nhanh chóng.

Mình sẽ tóm tắ lại như sau là bạn sẽ hiểu nó khác Dialog như thế nào nhé:

AlertDialog thực ta cũng y chang Dialog do nó kế thừa lại tuy nhiên nó có sẵn giao diện bạn chỉ cần gọi ra là sử dụng được và nếu bạn muốn custom giao diện cho nó thì cũng được luôn, có nghĩa là độ tiện lợi và tuỳ biến nó cao hơn Dialog nhưng cú pháp sẽ dài dòng hơn một chút, bây giờ chúng ta sẽ đi sâu vào đào bới nào:

Đây là giao diện của một AlertDialog mặc đinh không cần custom bằng file layout:

AlertDialog trong Android

AlertDialog trong Android

Nhìn nó có vẽ đẹp hơn nhiều so với Dialog đúng không các bạn? thằng này được lớp AlertDialog.Builder tạo giao diện từ những theme mà thư viện android đã định sẵn nên nhìn rất đẹp.

Đây là đoạn code java hiển thị AlertDialog, khi bấm vào nút Logout thì sẽ show lên:


Bạn chỉ cần để ý hàm showAlertDialog() là được rồi, mình sẽ phân tích từng hàm:

AlertDialog.Builder builder = new AlertDialog.Builder(this): đây là hàm khởi tạo một AlertDialog.Builder, thằng này có tác dụng vẽ ra giao diện cho AlertDialog, mặc định hàm trên nó sẽ sử dụng theme dialog mặc định khi show và trong video bên dưới mình sẽ nói rõ hơn chỗ này, giúp bạn tuỳ chỉnh theme cho đẹp hơn.

builder.setTitle(): ở đây là set tiêu đề cho AlertDialog, cái này tương tự như Dialog không có gì khác cả.

builder.setMessage(): đây là set nội dung bên trong cho Alert, thằng Dialog thì không có phương thức này nhé.

builder.setCancelable(): đây là thuộc tính nếu set false thì khi show dialog lên người dùng click ra bên ngoài dialog thì nó vẫn không bị mất, nếu set true thì sẽ mất khi click vào bất kì đâu ngoài dialog.


Đoạn code trên là để thêm một nút Button phía bên phải, Positive nghĩa là Dương, mà dương là nằm bên phải.Ở đây bạn đặt tên cho nó là gì thì tuỳ và phía dưới bạn sẽ bắt sự kiện cho nó, ở đây mình show lên một Toast thông báo thôi không có gì cả.


Đoạn này cũng tương tự, mình thêm một nut button bên trái tên là Đăng xuất, khi click vào nó sẽ tắt Alert này đi thôi.


Và đây là đoạn mà chúng ta sẽ gắn giao diện cho AlertDialog bằng thằng builder nãy giờ chúng ta đã tạo ra.Sau đó là show dialog này đi thôi.Cũng rất là đơn giản đúng không các bạn.

Cơ bản Dialog nó cũng như Toast thôi chứ không có gì khó lắm đâu, và ở phần lập trình Android nâng cao mình sẽ hướng dẫn các bạn cách custom thằng AlertDialog này theo ý mình.

Trong video bên dưới mình sẽ có nói đến rất nhiều thứ chính vì thế bạn nên xem nếu như bài viết trên bạn chưa thực sự hiểu hết.

Dialog và AlertDialog trong Android

Dowload Source Code


Mọi ý kiến thắc mắc xin các bạn cứ comment bên dưới blog nhé, chúc các bạn học tập vui vẽ!

Tiếp theo

Bài 16: Dialog và AlertDialog
5 (100%) 1 vote

4 Comments

  1. huy January 25, 2017
    • trangchongcheng January 26, 2017
  2. aru April 16, 2017
  3. danh June 16, 2017

Add Comment

*