当前位置: 首页 > 知识库问答 >
问题:

在DialogFragment中创建完全自定义的AlertDialog

晏望
2023-03-14

下面是我的FragmentActivity和DialogFragment。我尝试创建一个自定义AlertDialog。我已经部分实现了如下图所示。如何消除自定义AlertDialog周围的白色区域?

public class MainActivity extends FragmentActivity {    
public int mStackLevel = 0; 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    showDialog();    
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
public void showDialog(){
    mStackLevel++;
    FragmentTransaction ft = getSupportFragmentManager  ().beginTransaction();
    Fragment prev = getSupportFragmentManager().findFragmentByTag   ("dialogg");
    if(prev != null)
    {
        ft.remove(prev);
    }
    ft.addToBackStack(null);
    DialogFragment df = AppWizard.newInstance(mStackLevel);
    df.show(ft, "dialogg");
}  
public void doPositiveClick() {
    // Do stuff here.
    showDialog();
}
public void doNegativeClick() {
    // Do stuff here. 
}
public static class AppWizard extends DialogFragment {
    int mNum;   
    static AppWizard newInstance(int num){
        AppWizard aw = new AppWizard();
        Bundle args = new Bundle();
        args.putInt("num", num);
        aw.setArguments(args);
        return aw;  
    }   
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        mNum = getArguments().getInt("num");    
    }
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        int title = getArguments().getInt("num");
        LayoutInflater lo = getActivity().getLayoutInflater();
        View view = lo.inflate(R.layout.fragment_dialog, null);   
        final CharSequence[] items = {"Bir daha gösterme!"};
        final boolean[] _selections = null;
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());   
                builder.setView(view);            
                return builder.create();
    }
}

下面是我的alertdialog布局xml fragment_dialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_dialog"
    style="@style/AlertDialogCustom"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="top|center"
    android:orientation="vertical"
    android:background="@android:drawable/alert_dark_frame" >

 <TextView 
     android:id="@+id/dialog_header"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="BLABLABLA"
     android:textColor="@android:color/black"
     />
  <TextView 
     android:id="@+id/dialog_header2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="BLABLABLA2"
     android:textColor="@android:color/black"
     />
  <Button
        android:id="@+id/dialog_button"
        android:layout_width="125dp"
        android:layout_height="50dp"
        android:text="Click"
        android:textColor="@android:color/background_dark"
        android:textSize="8sp"
        android:textStyle="bold|italic"
        />

</LinearLayout>

共有1个答案

伊裕
2023-03-14

试着用这个:

public static class AppWizard extends DialogFragment {

    public static AppWizard newInstance(int num) {
        AppWizard f = new AppWizard();

        // Supply num input as an argument.
        Bundle args = new Bundle();
        args.putInt("num", num);
        f.setArguments(args);

        return f;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(STYLE_NORMAL, android.R.style.Theme_Light_Panel);
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return super.onCreateDialog(savedInstanceState);;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_dialog,
                container, false);

        // declare your UI elements here
        // For example: 
        // Button mButton =  view.findViewById(R.id.dialog_button);
        // mButton.setOnClickListener(this);

        return view;
    }

}

这将改变对话框的样式,并删除默认背景。

 类似资料:
  • 问题内容: 有没有一种方法可以JButton用您自己的按钮图形而不是仅在按钮内部创建图像? 如果没有,是否还有另一种方法可以JButton在Java中创建自定义? 问题答案: 当我第一次学习Java时,我们不得不制造Yahtzee,我认为创建自定义的Swing组件和容器会很酷,而不仅仅是在一个组件上绘制所有内容JPanel。Swing当然,扩展组件的好处是能够添加对键盘快捷键和其他辅助功能的支持,

  • 有人能帮我创建balow图像剪切搜索栏吗?我已经用自定义拇指和分段文本浏览过SeekBar,还有SeekBar拇指位置问题 但是我没有成功创建我的客户搜索栏,请帮助我

  • 问题内容: 我是新来的。我需要编写自定义的yii auto complete。我知道CJuiAutocomplete存在,但是我需要实现自己的自定义自动完成功能。任何人都可以指导我或帮助我开发自定义自动填充文本字段。在文本字段中显示名称时获取ID。 提前致谢 问题答案: 这是站点控制器中的操作… 这是您认为的搜索表单:

  • 问题内容: 我正在使用Axis2 1.5.2和Eclipse。我正在使用Eclipse从生成的WSDL生成WSDL和客户端代码。 我创建了一个服务可以抛出的自定义异常。创建Web服务时一切正常。Web服务成功启动,并且可以通过指向Web浏览器来查看生成的WSDL。但是,当我告诉Eclipse使用生成的WSDL生成客户端代码时,我从Eclipse中得到了以下错误: 我的自定义异常是“ InsertU

  • 问题内容: 我需要做的就是在当前函数执行结束时执行一个回调函数。 此功能的使用者应如下所示: 我该如何实施? 问题答案: 实际上,您的代码将按原样工作,只需将回调声明为参数即可,您可以使用参数名称直接调用它。 基础知识 那会叫,这会叫,这会提醒“东西在这里”。 请注意,传递函数 引用 ()而不是调用函数并传递其结果()非常重要。在您的问题中,您可以正确执行此操作,但是值得指出,因为这是一个常见错误

  • 我正在使用Spring Boot创建一个访问数据库的简单web应用程序。通过在中设置属性,我利用了DataSource的自动配置功能。这一切都很出色,而且非常快--伟大的工作伙计们@Spring! 我公司的政策是不应该有明文密码。因此,我需要对进行加密。经过一番深入研究,我决定创建一个实现,该实现创建一个jasypt,如下所示: 然后,我用文件将其打包到它自己的jar中,如下所示: 当在maven