正常声明一个单选列表弹窗,如下代码:
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客制化:添加非抽屉模式(可动态切换)、图标自动补位功能
普通网友: