我在我的代码中使用了一个复选框,如果默认情况下未启用,则会显示为灰色。以下是相同的代码:
public View getView(final Context context, View view) {
if (view == null) {
final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.item_selectable_textview, null);
}
final CheckedTextView textView = (CheckedTextView) view.findViewById(R.id.selectable_text);
textView.setText(mCategoryName);
if (isDefault()) {
mIsSelected = true;
}
textView.setChecked(mIsSelected);
if(!isEnabled()){
textView.setCheckMarkDrawable(R.drawable.checkbox_selected_grayout);
textView.setBackgroundResource(R.drawable.checkboxline);
textView.setPadding(20, 20, 20, 20);
}
return view;
}
checkbox_selected_grayout是复选框的图像,复选框的xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<gradient
android:startColor="#202020"
android:endColor="#202020"
android:angle="360.0" />
</shape>
</item>
<item android:top="40dp">
<shape android:shape="rectangle">
<solid android:color="#414141" />
<size android:height="1dp" />
</shape>
</item>
</layer-list>
当我使用复选框导航到视图时,该复选框看起来很好。但是当我滚动到视图的底部并返回到顶部时,它似乎向右移动而未与其他复选框对齐,有关如何解决它的任何线索? 注意:只要我删除了layerlist并将ti切换为单个形状,它就能正常工作而不会有任何变化。
答案 0 :(得分:0)
向上和向下滚动后看起来奇怪的东西的问题通常与在ListView中重复使用视图有关。如果您在ListView中格式化元素,则始终必须格式化所有内容,不要依赖它保留为“默认”,因为它可能已被重用并且已经格式化为另一个项目。
在您的代码中
!isEnabled()...
但如果已启用,则不格式化这些元素。