当我正在为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);
} } }
答案 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
并在那里处理。