自定义DialogFragment

来源:互联网 发布:情侣装专卖店品牌淘宝 编辑:程序博客网 时间:2024/05/03 09:33
1. drawable下的circular_corner_dialog.xml:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item>        <shape>            <gradient                android:startColor="@android:color/white"                android:endColor="@android:color/white">            </gradient>            <corners                android:topLeftRadius="10dp"                android:topRightRadius="10dp"                android:bottomLeftRadius="10dp"                android:bottomRightRadius="10dp">            </corners>        </shape>    </item></selector>
2. layout下的activity_infodialog.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@android:color/transparent"    android:gravity="center"    >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="@drawable/circular_corner_dialog"        android:id="@+id/linearlayout"        android:orientation="vertical"        android:gravity="center">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textAppearance="?android:attr/textAppearanceMedium"            android:text="Please input your informaion"            android:layout_marginTop="15dp"            android:layout_marginBottom="10dp"            android:layout_gravity="center_horizontal"            android:id="@+id/infoText" />        <EditText            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:inputType="textPersonName"            android:hint="Name"            android:ems="10"            android:layout_marginLeft="10dp"            android:layout_marginRight="10dp"            android:id="@+id/name" />        <EditText            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:inputType="number"            android:hint="Height(cm)"            android:ems="10"            android:id="@+id/height"            android:layout_marginLeft="10dp"            android:layout_marginRight="10dp"            android:layout_weight="1" />        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:gravity="center"            android:orientation="horizontal" >            <EditText                android:layout_width="0dp"                android:layout_height="wrap_content"                android:hint="Gender"                android:editable="false"                android:ems="10"                android:id="@+id/gender"                android:layout_marginLeft="10dp"                android:layout_marginRight="10dp"                android:layout_weight="4" />            <ImageButton                android:id="@+id/male"                android:layout_width="0dp"                android:layout_height="match_parent"                android:src="@drawable/malebutton"                android:layout_weight="1"                android:layout_marginRight="10dp"                android:background="@drawable/gener_icon_box" />            <ImageButton                android:id="@+id/female"                android:layout_width="0dp"                android:layout_height="match_parent"                android:src="@drawable/femalebutton"                android:layout_weight="1"                android:layout_marginRight="10dp"                android:background="@drawable/gener_icon_box" />        </LinearLayout>        <com.wys.myUtils.MyCustomButton            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:id="@+id/ok_button"            android:layout_marginTop="10dp"            android:layout_marginLeft="10dp"            android:layout_marginRight="10dp"            android:layout_marginBottom="10dp"            android:layout_gravity="center_horizontal" />        <com.wys.myUtils.MyCustomButton            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:id="@+id/cancel_button"            android:layout_marginLeft="10dp"            android:layout_marginRight="10dp"            android:layout_marginBottom="20dp"            android:layout_gravity="center_horizontal" />    </LinearLayout></LinearLayout>

其中MyCustomButton是上一篇博客中自定义的Button。

3. Dialog_activity:

package com.wys.myCameraAndDialog;import android.app.DialogFragment;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.view.Window;import android.widget.EditText;import android.widget.ImageButton;import android.widget.LinearLayout;import com.comdosoft.face.R;import com.wys.myUtils.MyCustomButton;public class InfoDialogActivity extends DialogFragment {private EditText mUsername;      private EditText mHeight;     private EditText mGender;     private LinearLayout mLinearlayout;     private MyCustomButton ok_button;    private MyCustomButton cancel_button;    private ImageButton male;    private ImageButton female;        public interface DialogActivityListener      {          void onDialogActivityComplete(EditText username, EditText height, EditText gender);          //隐藏软键盘        void onDialogActivitySoftInput(LinearLayout linearlayout);      } @Override      public View onCreateView(LayoutInflater inflater, ViewGroup container,              Bundle savedInstanceState)      {getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);        getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//Resources res = getResources();//Drawable background = res.getDrawable(R.drawable.input_info_panel);//getDialog().getWindow().setBackgroundDrawable(background);// set the animations to use on showing and hiding the dialog//getDialog().getWindow().setWindowAnimations(R.style.MyCustomTheme);        View view = inflater.inflate(R.layout.activity_infodialog, container, false);        mUsername = (EditText) view.findViewById(R.id.name);        mHeight = (EditText) view.findViewById(R.id.height);        mGender = (EditText) view.findViewById(R.id.gender);        mLinearlayout = (LinearLayout)view.findViewById(R.id.linearlayout);        ok_button = (MyCustomButton) view.findViewById(R.id.ok_button);        cancel_button = (MyCustomButton) view.findViewById(R.id.cancel_button);        male = (ImageButton)view.findViewById(R.id.male);        female = (ImageButton)view.findViewById(R.id.female);        ok_button.setRadius(15);        ok_button.setText("OK");        ok_button.setTextNormalPressedcolor(Color.WHITE, Color.CYAN);        ok_button.setBgNormalPressedcolor(Color.GREEN, Color.GRAY);        cancel_button.setRadius(15);        cancel_button.setText("Cancel");        cancel_button.setTextNormalPressedcolor(Color.WHITE, Color.CYAN);        cancel_button.setBgNormalPressedcolor(Color.RED, Color.GRAY);        final DialogActivityListener listener = (DialogActivityListener) getActivity();        listener.onDialogActivitySoftInput(mLinearlayout);        male.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                mGender.setText("male");            }        });        female.setOnClickListener(new OnClickListener(){            @Override            public void onClick(View v) {            mGender.setText("female");            }        });        ok_button.setOnClickListener(new OnClickListener(){            @Override            public void onClick(View v) {            listener.onDialogActivityComplete(mUsername, mHeight, mGender);            }        });        cancel_button.setOnClickListener(new OnClickListener(){            @Override            public void onClick(View v) {                mUsername.setText("");                mHeight.setText("");                mGender.setText("");                getDialog().dismiss();            }        });        return view;    }public void onResume() {     super.onResume();     Window window = getDialog().getWindow();     window.setLayout(window.getAttributes().width, 900);//设置dialog的宽度     window.setLayout(window.getAttributes().height, 1000);//Here!     window.setGravity(Gravity.CENTER);}}

最后实现的效果图


0 0