如何使对话框中的开关按钮居中

Posted

技术标签:

【中文标题】如何使对话框中的开关按钮居中【英文标题】:How to make the switch button center in dialog 【发布时间】:2016-03-07 18:37:14 【问题描述】:

我想在对话框中切换按钮中心,但是失败了...

这是为什么?

Switch sw = new Switch(MainActivity.this);
sw.setTextOn("start");
sw.setTextOff("close");
sw.setGravity(Gravity.CENTER_HORIZONTAL);

AlertDialog.Builder myDialog = new AlertDialog.Builder(MainActivity.this);
myDialog.setTitle("title");
myDialog.setMessage("message");
myDialog.setView(sw);

【问题讨论】:

在对话框中使用布局。 这样是不是不能实现? 也许对你有帮助:android - Customizing Dialog using an Xml Layout 对视图使用LayoutParams 谢谢,我可以试试:) 【参考方案1】:

试试下面的代码

        Switch sw = new Switch(MainActivity.this);
        sw.setTextOn("start");
        sw.setTextOff("close");


        LinearLayout linearLayout = new LinearLayout(MainActivity.this);
        linearLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));
        linearLayout.setGravity(Gravity.CENTER_HORIZONTAL);
        linearLayout.addView(sw);


        AlertDialog.Builder myDialog = new    AlertDialog.Builder(MainActivity.this);
        myDialog.setTitle("title");
        myDialog.setMessage("message");
        myDialog.setView(linearLayout);


        myDialog.show();

【讨论】:

非常感谢,这正是我需要的方式【参考方案2】:

请改用custom_layout

<LinearLayout
        android:layout_
        android:layout_
        android:gravity="center">

           <android.support.v7.widget.SwitchCompat
            android:layout_
            android:layout_/>
</LinearLayout>

使用LayoutInflater 来扩充对话框中的布局

View v = LayoutInflater.from(getActivity()).inflate(R.layout.custom_layout, null);
myDialog.setView(v);

【讨论】:

【参考方案3】:

改用RelativeLayout,为SwitchButton设置android:centerInParent=true

【讨论】:

以上是关于如何使对话框中的开关按钮居中的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中的开关按钮及其文本之间放置空格?

按钮开关的工作原理及如何区别作用

按钮开关的工作原理及如何区别作用

切换翻转开关后如何使弹出屏幕出现?

如何使用 [(ngModel)] 两种方式数据绑定在 Angular 4 中创建切换开关开关按钮

如何在颤动中自定义切换按钮[关闭]