相关文章推荐
帅气的投影仪  ·  ASP.NET MVC 3 | ...·  2 月前    · 
酷酷的牛腩  ·  spring boot ...·  11 月前    · 

正常声明一个单选列表弹窗,如下代码:

AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.Theme_AlertDialog_Base);
        String []items = {"1111111","2222222","3333333","4444444","5555555"
                ,"6666666","7777777","8888888","9999999","0000000","1111111","2222222","3333333","4444444","5555555"
                ,"6666666","7777777","8888888","9999999","0000000","1111111","2222222","3333333","4444444","5555555"};
        AlertDialog alertDialog = builder.setTitle("设置")
                .setSingleChoiceItems(items,0,null)
                .setPositiveButton("ok", null)
                .create();
        alertDialog.show();

其中style的声明只添加一个圆角属性:

<style name="Theme.AlertDialog.Base" parent="@style/Theme.AppCompat.DayNight.Dialog.Alert">
        <item name="dialogCornerRadius">12dp</item>
</style>

效果图如下:

自定义列表弹窗的单选图标样式:

在style中对Theme_AlertDialog_Base添加声明定义选中和未选中状态的drawable的selector类型文件:

<item name="android:listChoiceIndicatorSingle">@drawable/selector_ok_bg_enable</item>

去掉列表弹窗的上下提示线:

可以看到列表过长的时候,在列表底部是有提示线的,滑动下来的时候,顶部也会有提示线提示可以上往上滑动。有需求要求去掉这个原生自带的提示线行为,我们追踪源码可以看到提示线是在这个地方声明添加的:

那么,我们只需要在dialog show出来之后去设置这个setScrollIndicators为0即可:

AlertDialog alertDialog = builder.setTitle("设置")
                .setSingleChoiceItems(items,0,null)
                .setPositiveButton("ok", null)
                .create();
        alertDialog.setOnShowListener(dialog -> {
            alertDialog.getListView().setScrollIndicators(0);
        alertDialog.show();

效果如图:

OK按钮的颜色:

比较简单的方式是直接在style中对Theme_AlertDialog_Base添加属性声明:

<item name="android:colorAccent">@color/blue</item> <!--按钮颜色-->

如果需要复杂一点的样式,则声明确认按钮的style:

<item name="buttonBarPositiveButtonStyle">@style/BtnOk</item>

而BtnOk的声明方式格式如下:

<style name="BtnOk" parent="TextAppearance.AppCompat.Widget.Button">
        <item name="android:background">@drawable/test_shape</item>
        <item name="android:textColor">@color/white</item>
    </style>
Android AlertDialog 自定义 样式 列表 这种选择项的弹出式对话框,要改变 样式 一般都采取重写layout方式 今天才了解到 其实可以 自定义 样式 ,与大家分享下,其实很简单 AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AlertDialogCustom)); 然后 自定义 自己的 样式 就可以了 <?xml version=1.0 encoding=utf-8?> <resources> <style name=AlertDialo
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: android ="http://schemas. android .com/apk/res/ android " android :orienta... SlideDialog slideDialog = new SlideDialog(this, list, false, false); slideDialog.setOnSelectClickListener(new SlideDialog.OnSelectListener() { @Override public void onCancel() { Toast.makeText(GroupFormListActivi...
好看的 单选 框 谷歌提供的默认 单选 框的UI实在是丑,一个圆形的选中按钮+文字,在现有的项目中几乎是没有人会采用的,几乎都会 自定义 一套好看的 单选 按钮 样式 ,下面我们来看看本人 自定义 好看的 单选 框,中间带图片,效果图: 下面来看看代码是如何实现的: MainActivity class MainActivity : AppCompatActivity(), RadioGroup.OnCheckedChangeListener { override fun onCreate(savedInstanceSta
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 这个异常让人很头疼,你必须要在parent上调用removeView移除掉你要重复使用的这个view才可以,有时候不知道你的view被...
那我为何会有标题所提这样一个疑问呢? 静态的声明会在程序一加载的时候就分配一个空间在,类似于一打开程序就实例化了。它会一直存在,直到程序被销毁。若是static使用不当,就很有可能出现内存泄漏的问题。 经过我查阅网上的资料结合自己的理解...
好的,下面是 Android 自定义 单选 列表 对话框的实现步骤: 1. 创建 自定义 的对话框布局文件,例如命名为 custom_single_choice_dialog.xml。 2. 在该布局文件中添加一个 ListView 组件用于展示 单选 列表 。 3. 创建一个 自定义 的 ArrayAdapter 用于填充 ListView,例如命名为 CustomArrayAdapter。该 ArrayAdapter 继承自 ArrayAdapter 类,用于将数据绑定到 ListView 上。 4. 在 自定义 的 ArrayAdapter 中重写 getView() 方法,设置 单选 列表 每一项的 样式 和内容。 5. 在 Activity 中创建对话框,并设置对话框的标题、确定按钮和取消按钮。 6. 在确定按钮的点击事件中获取所选中的项,并进行相应的操作。可以通过设置 ListView 的 OnItemClickListener 来实现单击 列表 项的选择。 7. 最后,在 Activity 中调用对话框的 show() 方法,将对话框展示出来。 以上就是 Android 自定义 单选 列表 对话框的实现步骤,希望能够对你有所帮助。
java.lang.IllegalStateException:The specified child already has a parent异常万能解决方案:removeView 12479 onAlarm(alarm, mDragTargetLayout); public void onAlarm(Alarm alarm, CellLayout cellLayout) { //原逻辑 目的只是区分cellLayout是我传进来的还是原本的 Android12 Launcher3客制化:添加非抽屉模式(可动态切换)、图标自动补位功能 普通网友: trigger方法里面有这么一行代码: onAlarm(null, cellLayout); 这里面的onAlarm有两个参数,是自定义的方法? 原生的onAlarm只有一个参数