Android — Hiding Views

2020-07-18 11:23发布

Okay, so I've done some looking around and I see how you are SUPPOSED to do it, but for me, it is just not working.

I need to be able to set the alpha of a RelativeLayout both in XML and in code. For my XML, I have the following

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/player_controls"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:alpha="0.0">
    <RelativeLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:id="@+id/player_controls_touch_me"
        >
        </RelativeLayout>
</RelativeLayout>

I get the error: no resource identifier found for attribute 'alpha' in package 'android'

Also, based on the Android documentation, I should be able to call setAlpha(double) on any View object, but when I try to make that call on a RelativeLayout it tells me that this method is not defined for this object.

Why am I not able to control the alpha transparency for a RelativeLayout object in Android? Am i missing something? Thanks!

Update

Although using the visibility property works, it prevents me from be able to click on the ViewGroup. This is important for me because I am utilizing the OnTouchListener of the ViewGroup.

What I am trying to do is to have a layer with media controls, initially hidden. when the user taps anywere on the screen, I want the controls to fade in and when they tap the screen again I want the controls to fade out. I have this part already working. I am using a viewgroup that sits over-top my entire application with an OnTouchListener attached that can determine if it has or hasn't been touched. My problem is that after the animation runs to fade out the controls, they re-appear. If I use @Hydrangea suggestion, I can have it fade out and immediately made invisible. This gives me the desired effect, but then the ViewGroup is unclickable and the user cannot get the controls to come back (or go away, depending on what we decide to do first).

I hope this makes sense.

7条回答
淡お忘
2楼-- · 2020-07-18 11:48

You can add to the right answer the following option:

animation.setDuration(xxx);

To each animation instance. In this way your animation will look better.

查看更多
登录 后发表回答