• Android:自定义列表弹窗的单选图标样式、去掉列表弹窗的上下提示线


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

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

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

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

    效果图如下:

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

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

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

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

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

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

    1. AlertDialog alertDialog = builder.setTitle("设置")
    2. .setSingleChoiceItems(items,0,null)
    3. .setPositiveButton("ok", null)
    4. .create();
    5. alertDialog.setOnShowListener(dialog -> {
    6. alertDialog.getListView().setScrollIndicators(0);
    7. });
    8. alertDialog.show();

    效果如图:

    OK按钮的颜色:

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

    <item name="android:colorAccent">@color/blueitem> 

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

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

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

    1. <style name="BtnOk" parent="TextAppearance.AppCompat.Widget.Button">
    2. <item name="android:background">@drawable/test_shapeitem>
    3. <item name="android:textColor">@color/whiteitem>
    4. style>

  • 相关阅读:
    Delphi中资源文件使用详解
    《bug记录》在利用TCP协议创建【服务器-客户端交互程序】中出现的一些问题
    sftp文件上传uploadFile
    winform窗体、控件的简单封装,重做标题栏
    面试常见问题:如何回答才得体?
    GA4-如何自定义转化目标追踪特定网址?
    JWT快速上手 | 黑马
    STL好难(3):vector的使用
    华为机试 - 字符串重新排列
    mmrotate旋转目标检测框架使用记录
  • 原文地址:https://blog.csdn.net/qq_35584878/article/details/133700753