0

因为我正在为 API 级别 7 及更高级别进行开发,所以我setAlpha(float)无法使用。因此,我已经实现了一个遍历给定的所有子元素的方法,ViewGroup并尝试找到一种方法来设置 alpha 以使元素几乎是透明的。不幸的是,我无法想出一种方法来使其ListView及其项目透明。我该如何进行?

我的方法:

public void enableDisableViewGroup(ViewGroup viewGroup, boolean enabled) {
    int childCount = viewGroup.getChildCount();
    for (int i = 0; i < childCount; i++) {
        View view = viewGroup.getChildAt(i);

        view.setEnabled(enabled);
        if (!enabled) {
            if (view instanceof TextView) {
                int curColor = ((TextView) view).getCurrentTextColor();
                int myColor = Color.argb(ALPHA_NUM, Color.red(curColor),
                        Color.green(curColor),
                        Color.blue(curColor));

                ((TextView) view).setTextColor(myColor);
            } else if (view instanceof ImageView) {
                ((ImageView) view).setAlpha(ALPHA_NUM);
            } else if (view instanceof ListView) {
                // How do I set the text color of the subitems in this listview?
            } else {
                try {
                    Paint currentBackgroundPaint =
                            ((PaintDrawable) view.getBackground()).getPaint();
                    int curColor = currentBackgroundPaint.getColor();
                    int myColor = Color.argb(ALPHA_NUM, Color.red(curColor),
                            Color.green(curColor), Color.blue(curColor));
                    view.setBackgroundColor(myColor);
                } catch (NullPointerException e) {
                    Log.d("viewNotFound", "View " + view.getId() + " not found..");
                    e.getStackTrace();
                }
            }
            if (view instanceof ViewGroup) {
                enableDisableViewGroup((ViewGroup) view, enabled);
            }
        }
    }
}
4

1 回答 1

0

是否可以选择直接在 XML 中为您的ListView行设置它?

例如,如果您的布局是LinearLayout

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent">

    <!-- stuff -->
</LinearLayout>

我不确定你的设置,但如果你真的希望你ListView是透明的,你可以像这样以编程方式设置它。

ListView listView = (ListView) view;
listView.setBackgroundColor(android.R.color.transparent);

默认颜色android.R.color.transparent等于:

<!-- Fully transparent, equivalent to 0x00000000 -->
<color name="transparent">#00000000</color>

在这种情况下,无论如何您都需要将ListView行设置为在 XML 中是透明的。

如果您想控制行View内 s的透明度ListView,最好的办法是创建一个自定义ArrayAdapter并在那里处理。

于 2013-02-25T17:39:45.623 回答