查看#setVisibility在api上不可见< 17

时间:2016-06-21 13:10:39

标签: android android-layout

我有这个自定义视图(相对布局),其中基于一些其他视图高度我正在尝试设置alpha和可见性。

我的alpha值会根据视图高度而变化,我会检查我的alpha是否为< CONSTANT(如0.033)我将该视图的可见性设置为不可见。 api 18 n以上的一切都运行良好但由于某种原因它不能用于较低的api。

代码看起来像这样

    if (val< 0.033){
        setVisibility(GONE);
    } else {
        setVisibility(VISIBLE);
        for (int i = getChildCount()- 1; i >= 0; i--) {
            View v  = getChildAt(i);
            v.setVisibility(VISIBLE);
            v.invalidate();
        }
    }
    setAlpha(val);
    invalidate();

我真的需要Visibility.GONEVisibility.VISIBLE才能为我的观点正常运作。 Visibility.INVISIBLE无法满足我的要求。

我尝试在Logcat中打印出可见性,它在logcat中显示VISIBLE但在实际设备上却没有。

如果我没有将VISIBILITY设置为GONE,那么即使在较低的api上,一切也能正常工作。

所以主要的问题是,一旦知名度设置为已经消失,我无法再将其视为可见

尝试:

  1. 我尝试浏览所有子视图并使其可见。 =不起作用:(

        for (int i = getChildCount()- 1; i >= 0; i--) {
            View v  = getChildAt(i);
            v.setVisibility(VISIBLE);
        }
    
  2. 设置可见性后尝试调用invalidate =不起作用:(
  3. 尝试同时使子视图可见并在其后调用invalidate。

1 个答案:

答案 0 :(得分:0)

在您的代码中,它就像setVisibility(GONE); 但它应该像someView.setVisibility(GONE);