2

我在我的代码中使用了一个复选框,如果默认情况下未启用,该复选框将显示为灰色。这是相同的代码:

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 是 checkbox 的图像, checkboxline 的 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 切换到单个形状,它就可以正常工作而没有任何变化。

4

1 回答 1

0

上下滚动后看起来奇怪的东西的问题通常与 ListView 中视图的重用有关。如果您在 ListView 中格式化一个元素,您总是必须格式化所有内容,不要依赖它被保留为“默认”,因为它可能已被重用并且已经为另一个项目格式化。

在你的代码中

!isEnabled()...

但如果启用,您不会格式化这些元素。

于 2013-08-05T11:45:26.110 回答