【转】Android AlertDialog自定义布局
生活随笔
收集整理的這篇文章主要介紹了
【转】Android AlertDialog自定义布局
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文網址:https://blog.csdn.net/u010694658/article/details/53022294
由于開發中經常使用彈框,然而系統自帶的彈框太局限,也不太美觀,經常不能滿足開發需求,所以就只能自定義布局。其實自定義布局很簡單,沒不要寫出來,但是如果不寫一遍的,后面遇到的話就感覺又會忘記,所以在次記一小筆,僅記一個最簡單的例子,可以舉一反三。?
直接上代碼
public class MainActivity extends Activity implements OnClickListener { private TextView text1, text2; private Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); mContext = this; initView(); } private void initView() { text1 = (TextView) findViewById(R.id.text1); text2 = (TextView) findViewById(R.id.text2); text1.setOnClickListener(this); text2.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.text1: dialogShow1(); break; case R.id.text2: dialogShow2(); break; default: break; } } private void dialogShow1() { AlertDialog.Builder builder = new Builder(mContext); builder.setTitle("溫馨提示"); builder.setIcon(R.drawable.ic_launcher); builder.setMessage("原理是基本"); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { Toast.makeText(mContext, "no", 1).show(); } }); builder.setPositiveButton("立即更新", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { Toast.makeText(mContext, "ok", 1).show(); } }); Dialog dialog = builder.create(); dialog.show(); } /** * 自定義布局 * setView()只會覆蓋AlertDialog的Title與Button之間的那部分,而setContentView()則會覆蓋全部, * setContentView()必須放在show()的后面 */ private void dialogShow2() { AlertDialog.Builder builder = new Builder(mContext); LayoutInflater inflater = LayoutInflater.from(mContext); View v = inflater.inflate(R.layout.update_manage_dialog, null); TextView content = (TextView) v.findViewById(R.id.dialog_content); Button btn_sure = (Button) v.findViewById(R.id.dialog_btn_sure); Button btn_cancel = (Button) v.findViewById(R.id.dialog_btn_cancel); //builer.setView(v);//這里如果使用builer.setView(v),自定義布局只會覆蓋title和button之間的那部分 final Dialog dialog = builder.create(); dialog.show(); dialog.getWindow().setContentView(v);//自定義布局應該在這里添加,要在dialog.show()的后面 //dialog.getWindow().setGravity(Gravity.CENTER);//可以設置顯示的位置 btn_sure.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); Toast.makeText(mContext, "ok", 1).show(); } }); btn_cancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { dialog.dismiss(); Toast.makeText(mContext, "no", 1).show(); } }); } }activity_main的布局
<LinearLayout 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:layout_marginTop="100dp" android:orientation="vertical" > <TextView android:id="@+id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:gravity="center" android:text="彈出dialog" android:textSize="@dimen/activity_horizontal_margin" /> <TextView android:id="@+id/text2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:gravity="center" android:text="彈出自定義布局dialog" android:textSize="@dimen/activity_horizontal_margin" /> </LinearLayout>update_manage_dialog布局
<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:background="#00FFFFFF" > <RelativeLayout android:layout_width="250dp" android:layout_height="250dp" android:layout_centerInParent="true" android:background="@drawable/update_bg" > <TextView android:id="@+id/dialog_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:gravity="center" android:text="溫馨提示" android:textSize="18sp" /> <TextView android:id="@+id/dialog_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/dialog_title" android:layout_marginTop="10dp" android:layout_marginLeft="30dp" android:layout_marginRight="30dp" android:text="原理是基本\n實踐出真知" android:textSize="14sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal" > <Button android:id="@+id/dialog_btn_cancel" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@null" android:text="取消" android:textColor="#AAAAAA" android:textSize="14sp" /> <Button android:id="@+id/dialog_btn_sure" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@null" android:text="立即更新" android:textSize="14sp" /> </LinearLayout> </RelativeLayout> </RelativeLayout>update_bg放在drawable里面,代碼如下
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <!-- android:radius 弧形的半徑 --> <corners android:radius="30dp" /> <!-- 填充的顏色 --> <solid android:color="@android:color/white" /> </shape>總結
以上是生活随笔為你收集整理的【转】Android AlertDialog自定义布局的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ5251:[九省联考2018]劈
- 下一篇: 怎样寻回win8因为删除后清空回收站的数