这几天需要用到一个动态的多选列表框,结果从资源文件中设置是没有问题的。
例1:
<CheckedTextView
android:id="@+id/checkedTextView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:text="@string/loansmanager"
/>
于是我为了动态生成,在java代码中这样设置
CheckedTextView2=new CheckedTextView(this);
CheckedTextView2.setText("test2");
CheckedTextView2.setCheckMarkDrawable(android.R.attr.listChoiceIndicatorMultiple);
myLayout.addView(CheckedTextView2);
结果报了异常android.content.res.Resources$NotFoundException when programmatically setting android.R.attr.listChoiceIndicatorMultiple·····
理论上这样是没有问题的,可能在绘制时需要先取到id,在绘制吧。google了一下,解决了,关键代码如下
//根据数组id得到数组类型
TypedArray ta = getBaseContext().getTheme().obtainStyledAttributes(attrs);
//初始化绘制目标
Drawable indicator = ta.getDrawable(0);
CheckedTextView1=new CheckedTextView(this);
CheckedTextView1.setText("test1");
//得到绘制目标后放入选择框中
CheckedTextView1.setCheckMarkDrawable(indicator);
分享到:
相关推荐
2. **绘制复选标记**:在自定义的CheckableTextView中,我们需要重写`onDraw()`方法,以便在需要时在TextView上绘制复选标记。可以使用Canvas对象的drawRect()和drawText()方法来完成这一操作。 3. **监听器**:...
本示例"安卓listview相关相关-androidlistview长按子项动态添加自定义viewTestView.rar"聚焦于ListView的一项高级用法:长按子项时动态添加自定义View。这个功能可以提升用户体验,比如在邮件应用中,长按邮件可以弹...
2. 缓存计算好的高度:避免每次绘制都重新计算行高。 3. 使用AsyncTaskLoader或CursorLoader加载数据,实现异步加载和数据更改通知。 五、适配器的更新 当用户对列表项进行编辑或复选操作时,需要通知适配器数据已...
8. **刷新视图**:在修改了选择状态后,我们需要调用ListView的notifyDataSetChanged()方法,通知ListView数据集发生了变化,使其重新绘制以显示新的选择状态。 9. **保存和恢复选择状态**:如果应用需要在切换页面...
在ListView中添加OnItemClickListener,当用户点击列表项时,更新`selectedPosition`并通知Adapter数据已更改,以便重新绘制视图。 ```java listView.setOnItemClickListener(new AdapterView.OnItemClickListener...
4. 动态加载:如果数据量大,可以考虑使用懒加载策略,只在需要时加载子列表项,以提高性能。 **优化与注意事项:** - 为了提高性能,适配器应充分利用convertView复用机制,减少视图的创建和销毁。 - 对于大量数据...
此时,ListView会记录被选中的项,并在重新绘制时保持它们的选中状态。 4. **处理点击事件**: 在自定义Adapter中,或者在Activity/Fragment中,我们需要监听ListView的项点击事件。当用户点击一个列表项时,更新...
开发者可能使用了OpenGL ES或者第三方库如Shatter library,通过计算和绘制每个粒子的位置、速度和旋转角度,模拟物体破碎后的动态效果,为用户带来更为沉浸式的体验。 Activity与Fragment的切换实例展示了Android...
在改变选择状态后,需要调用`notifyDataSetChanged()`方法通知ListView数据已更新,使其重新绘制界面。 7. **自定义布局**: 如果系统提供的CheckedTextView不能满足需求,可以创建自定义的Checkable布局。实现...
`CalendarView`, `CheckBox`, `CheckedTextView` `View` 类作为UI组件的基础,提供了绘制、事件处理等功能。它还定义了一些常用的方法,如`onDraw()`用于绘制自身,`onTouchEvent()`用于处理触摸事件等。 ##### 2....
若需动态修改,可以在代码中调用`setThumbDrawable()`和`setTrackDrawable()`方法。 3. **文字标签**: 自定义开关的文字标签可以通过`android:textOn`和`android:textOff`属性设置,或者在代码中使用`setTextOn()`...
4. **视图绘制**:适配器的`getView()`方法是关键,这里需要根据节点的选中状态来绘制对应的视图,包括勾选框的状态。可以使用`CheckedTextView`或者其他自定义的带有勾选框的布局来实现。 5. **递归加载**:为了...
实现时,通常使用CheckedTextView或者RadioButton,结合ListView或RecyclerView展示选项。用户的选择状态需要通过 SparseBooleanArray 或其他数据结构来跟踪。在源码中,开发者可能会使用Adapter来填充数据,并处理...
这需要使用`StateListDrawable`来处理不同状态下的图像,结合`CheckedTextView`或`ToggleButton`进行布局设计,并通过监听事件来控制开关状态。 3. **自定义ViewPager指示器**: ViewPager指示器常用于展示多个...
3. **CheckedTextView或CheckBox**:为了实现列表项的多选,通常会在每个列表项中嵌入CheckedTextView或CheckBox。用户可以通过点击来选择或取消选择对应的列表项。 4. **MultiChoiceModeListener**:这是ListView...
由于GridView会复用Item视图(通过convertView),所以要确保在Adapter的`getView()`方法中正确处理选中状态,防止内存泄漏和不必要的视图绘制。 10. **测试和调试**: 最后,为了确保代码的正确性,需要进行详尽...
而在Android中,我们可以用Switch或CompoundButton(如CheckedTextView或RadioButton)来实现类似的功能,但它们的默认样式与iOS的UISwitch有所不同。 要创建一个外观和功能都接近于iPhone开关的自定义控件,我们...
ListView通过复用视图(convertView)来优化性能,即滚动时重用不再可见的列表项,减少内存分配和绘制。 **2. 可拖拽排序功能:** 在标准的ListView中,用户不能直接拖动条目进行排序。然而,通过第三方库如“drag_...
自定义控件是从`View`类或其子类派生而来,通过重写绘制方法(`onDraw()`)、测量方法(`onMeasure()`)等来实现特定的视觉效果或交互逻辑。自定义控件是实现独特用户界面的关键,它允许开发者创建完全符合应用设计风格...
TextView有许多子类,包括Button、CheckedTextView和Chronometer等,这些子类都扩展了TextView的功能。例如,EditText则是一个可编辑的TextView,允许用户输入文本。在XML属性方面,TextView提供了丰富的定制选项,...