您的位置:首页 > 移动开发 > Android开发

android自定义底部弹出对话框

2014-09-04 23:27 393 查看
现在很多应用的头像设置都要求从屏幕底部弹出对话框,因为Android系统自带的对话框都是在屏幕中央,所以对于显示在底部的对话框就需要自己定义了。

代码如下:

package com.org.buttomdialog;

import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Display;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;

public class MainActivity extends ActionBarActivity {
private Dialog setHeadDialog;
private View mDialogView;
private Button mButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button) findViewById(R.id.button1);

mButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
showDialog();
}
});
}

public void showDialog() {
setHeadDialog = new Builder(this).create();
setHeadDialog.show();
mDialogView = View.inflate(getApplicationContext(),
R.layout.layout_dialog, null);

setHeadDialog.getWindow().setContentView(mDialogView);

WindowManager windowManager = this.getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = setHeadDialog.getWindow()
.getAttributes();
lp.width = (int) (display.getWidth()); // 设置宽度
setHeadDialog.getWindow().setAttributes(lp);
bindDialogEvent();

}

private void bindDialogEvent() {
Button cameraButton = (Button) mDialogView
.findViewById(R.id.iv_userinfo_takepic);
Button photoButton = (Button) mDialogView
.findViewById(R.id.iv_userinfo_choosepic);
Button cancelButton = (Button) mDialogView
.findViewById(R.id.iv_userinfo_cancle);

cameraButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
setHeadDialog.dismiss();
}
});
photoButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
setHeadDialog.dismiss();
}
});
cancelButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
setHeadDialog.dismiss();
}
});
}
}
自定义布局:layout_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#000000"
android:gravity="center_horizontal"
android:orientation="vertical" >

<LinearLayout

android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:gravity="center"
android:orientation="vertical"
android:padding="7dp" >

<Button
android:id="@+id/iv_userinfo_takepic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/green_btn_selector"
android:text="拍照"/>
</LinearLayout>

<LinearLayout

android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="7dp" >

<Button
android:id="@+id/iv_userinfo_choosepic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/green_btn_selector"
android:text="从相册选择"/>
</LinearLayout>

<LinearLayout

android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="7dp" >

<Button
android:id="@+id/iv_userinfo_cancle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/gray_btn_selector"
android:text="取消"/>
</LinearLayout>
</LinearLayout>

</RelativeLayout>
对于Button的选择效果的xml文件就不贴出了。

运行效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: