自定义Dialog(2)

来源:互联网 发布:怎样安装t3软件 编辑:程序博客网 时间:2024/06/05 21:10

1.背景:因为自己的项目的Dialog的样式需要符合项目的风格就要自己来实现自定义的Dialog

2.如何去实现

步骤1.首先写出自己想要的Dialog想要弹出来的布局样式,就跟写布局一样。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"     android:background="@drawable/text_background">            <TextView        android:id="@+id/title"        android:layout_width="match_parent"        android:layout_height="40dp"        android:text="请输入路段"        android:textSize="10dp"        android:textStyle="bold"        android:gravity="center"        android:background="@drawable/dialog_background"        android:textColor="#FFFFFF"/>       <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"         android:orientation="horizontal"         android:layout_marginTop="25dp">        <AutoCompleteTextView            android:id="@+id/my_loction"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="2"            android:background="@drawable/text_search"            android:completionThreshold="2"            android:dropDownVerticalOffset="1.0dip"            android:hint="我的位置"            android:text="我的位置"            android:textColorHint="@color/darkgrey"            android:imeOptions="actionDone"            android:inputType="text|textAutoComplete"            android:maxLength="20"            android:paddingRight="37.0dip"            android:singleLine="true"            android:textSize="16.0sp" />      <AutoCompleteTextView             android:id="@+id/Object_Loction"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="2"            android:layout_marginLeft="5.0dip"            android:hint="目的地"            android:textColorHint="@color/darkgrey"            android:background="@drawable/text_search"            android:imeOptions="actionDone"            android:singleLine="true"            android:textSize="16.0sp"/>    </LinearLayout>             <Button           android:id="@+id/Navi_button"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:text="GO"          android:textStyle="bold"          android:background="@drawable/dialog_button_background"          android:textSize="15dp"/></LinearLayout>

步骤2.

在active中创建AlterDialog并且利用getwindow().setContView()方法来加载自己的布局文件


 LayoutInflater inflate = LayoutInflater.from(getActivity()); View view = inflate.inflate(R.layout.dialog_layout, null); final Dialog dialog = new AlertDialog.Builder(getActivity()).setView(new EditText(getActivity())).create();dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);//申请无标题dialog.show();dialog.getWindow().setContentView(view);//加载ViewButton navirGo = (Button) view.findViewById(R.id.Navi_button);//autocomplete的监听和寻找obj_Loction = (AutoCompleteTextView)view. findViewById(R.id.Object_Loction);my_Loction = (AutoCompleteTextView) view.findViewById(R.id.my_loction);obj_Loction.addTextChangedListener(this);my_Loction.addTextChangedListener(this);navirGo.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {NaviStart();//开始导航;Toast.makeText(getActivity(), "OK!", Toast.LENGTH_LONG).show();         dialog.dismiss();}});
这样就可以定义自己的Dialog了

问题

这样的办法有一个问题就是输入法无法自己弹出来根据网上的解决办法就是setView(new Editext(Context))就可以了。

还可以给dialog设置背景透明,设置dialog的位置,

通过获得dialog.getwindow().getAttributes()获得windowMannger.LayoutParams设置一些dialog的参数就可以了

具体代码如下:

WindowManager.LayoutParams pa = dialog.getWindow().getAttributes();pa.alpha=0.9f;dialog.getWindow().setAttributes(pa);

效果图如下:



1 0