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

android---朋友圈评论功能自定义对话框

2016-04-27 19:44 453 查看
模仿QQ空间和微信朋友圈的一个功能,就是给好友发布的说说添加评论,如果在item中直接添加edittext 会导致无法解决的问题,就是edittext输入出现困难并导致数据乱跳,所以item中设置一个textview,并设置点击事件,点击这个textview后将弹出我们设置好的对话框,下面就是对话框的实现过程:

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();

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