模仿QQ空间和微信朋友圈的一个功能,就是给好友发布的说说添加评论,如果在item中直接添加edittext 会导致无法解决的问题,就是edittext输入出现困难并导致数据乱跳,所以item中设置一个textview,并设置点击事件,点击这个textview后将弹出我们设置好的对话框,下面就是对话框的实现过程:
PLDialog.java
PLDialog.java
package com.example.pl;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class PLDialog extends Dialog implements android.view.View.OnClickListener{
private Button button;
private EditText editText;
public PLDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public PLDialog(Context context, int theme) {
super(context, theme);
// TODO Auto-generated constructor stub
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.slt_cnt_type);
button = (Button)findViewById(R.id.pl_send);
editText = (EditText)findViewById(R.id.pl_edit);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v == button)
{
Log.e("dd", editText.getText().toString());
this.dismiss();
}
}
}
只是简单的设置了包含的布局,重写这个的目的有两个,一是为了防止使用原生对话框导致setview中出现黑色的线,二是为了更好的利用edittext和button按钮。也就是他们的点击事件。
对话框的布局
由于设置右边的按钮的时候必须靠右边,否则会出现对话框不充满右边的情况
对话框的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#bdbdbd">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/pl_edit_bg" >
<EditText
android:id="@+id/pl_edit"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="60dp"
android:layout_marginTop="5dp"
android:background="@drawable/pl_edit_text_bg"
android:textSize="15sp"
android:hint="说点什么...关爱一下" >
</EditText>
<Button
android:id="@+id/pl_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="发送"
android:gravity="center_vertical"
android:layout_centerVertical="true"
android:background="#00000000"
android:textColor="#ff9497" />
</RelativeLayout>
</LinearLayout>
由于设置右边的按钮的时候必须靠右边,否则会出现对话框不充满右边的情况
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:background">@color/transparent</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:windowSoftInputMode">stateVisible|adjustPan|adjustResize</item>
</style>
设置对话框后取消背景的半透明。
对对话框的调用
设置对话框后取消背景的半透明。
mPlDialog = new PLDialog(mContext,R.style.pldialog);//创建Dialog并设置样式主题
Window window = mPlDialog.getWindow();
WindowManager.LayoutParams wmlp =window.getAttributes();
wmlp.gravity = Gravity.BOTTOM | Gravity.LEFT | Gravity.RIGHT;
window.setAttributes(wmlp);
mPlDialog.show();对对话框的调用