如何设置列表视图中所有项目的alpha?

时间:2013-02-25 17:14:37

标签: android android-listview

当我正在为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);
                }           }       }

1 个答案:

答案 0 :(得分:0)

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

例如,如果您的布局是LinearLayout

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

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

我不确定您的设置,但如果您真的希望ListView透明,则可以以编程方式设置它。

ListView lv = (ListView)view;
lv.setBackgroundColor(android.R.color.tramnsparent);

在这种情况下,您还需要将ListView行设置为在XML中透明。

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