步骤
- 新建一个类继承DialogFragment
- 在onCreateView方法里面inflate 自己写的View(layout布局文件,也可以是代码写的View)
- 自己写布局文件View,可以直接写dialog的布局,不用在外层加一个铺满屏幕的父布局,然后设置透明,像如下例子1:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="210dp"
android:layout_height="210dp"
android:gravity="center"
android:background="@drawable/bg_select_dlg"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/network_train_textsize20px"
android:textColor="@android:color/white"
android:layout_margin="@dimen/ui_margin_10dp"
android:text="请选择一个项目:"/>
<RadioGroup
android:background="@drawable/bg_rgb_dlg"
android:layout_width="match_parent"
android:id="@+id/radiogroub"
android:layout_height="wrap_content">
<RadioButton
android:layout_width="match_parent"
android:layout_height="@dimen/ui_margin_50dp"
android:id="@+id/rb1"
android:text="场考地图"
android:textSize="@dimen/network_train_textsize24px"
android:layout_marginLeft="@dimen/ui_margin_10dp"
android:textColor="@android:color/white"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="@dimen/ui_margin_50dp"
android:id="@+id/rb2"
android:textSize="@dimen/network_train_textsize24px"
android:text="路考地图"
android:layout_marginLeft="@dimen/ui_margin_10dp"
android:textColor="@android:color/white"/>
</RadioGroup>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/ui_margin_10dp"
android:text="确定"
android:textSize="@dimen/network_train_textsize22px"
android:background="@null"
android:textColor="@android:color/white"
android:id="@+id/btn_sure_"/>
</LinearLayout>
DialogFragment弄了一个弹出框,白色背景消不掉
- 解决办法
- 在onCreateView方法里面,
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
示例代码
public class SelectDialog extends DialogFragment implements View.OnClickListener {
private static final String TAG = "SelectDialog";
private Button button;
private RadioButton rb1,rb2;
private RadioGroup rgb;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
View view = inflater.inflate(R.layout.layout_select_dlg,container,false);
initView(view);
return view;
}
private void initView(View view) {
button = view.findViewById(R.id.btn_sure_);
rgb = view.findViewById(R.id.radiogroub);
rgb.setOnCheckedChangeListener((RadioGroup group, int checkedId)-> {
switch (checkedId){
case R.id.rb1:
Log.i(TAG,"第一个被选中");
break;
case R.id.rb2:
Log.i(TAG,"第二个被选中");
break;
default:break;
}
});
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_sure_:
dismiss();
break;
}
}
}