Android View不会变得可见

时间:2016-03-20 05:18:28

标签: android layout view onclick visibility

我试图为我的音乐播放器实施控件。

这是我的XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:clickable="true"
    android:fitsSystemWindows="true"
    app:behavior_hideable="true"
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:baselineAligned="false"
        android:orientation="vertical">

        ...

            <LinearLayout
                android:id="@+id/control_toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:gravity="bottom"
                android:orientation="horizontal"
                android:weightSum="4">

<!-- This is volume control Button -->
                <RelativeLayout
                    android:id="@+id/bottom_sheet_control_volume_container"
                    android:layout_width="wrap_content"
                    android:layout_height="56dp"
                    android:layout_weight="1"
                    android:gravity="center">

                    <ImageButton
                        android:id="@+id/bottom_sheet_control_volume"
                        android:layout_width="48dp"
                        android:layout_height="48dp"
                        android:background="@drawable/item_bg_transparent"
                        android:src="@drawable/ic_volume_up_black_24dp" />
                </RelativeLayout>

<!-- Other Buttons -->
                ...
            </LinearLayout>

<!-- Layout with volume control SeekBar -->
            <io.codetail.widget.RevealFrameLayout
                android:id="@+id/reveal_seek_bar_volume"
                android:layout_width="match_parent"
                android:layout_height="56dp"
                android:layout_alignParentBottom="true"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:visibility="visible">

                <LinearLayout
                    android:id="@+id/container_seek_bar_volume"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@color/white"
                    android:focusable="true"
                    android:focusableInTouchMode="true"
                    android:gravity="center_vertical"
                    android:orientation="horizontal"
                    android:visibility="gone">

                    <ImageButton
                        android:id="@+id/container_seek_bar_volume_close"
                        android:layout_width="40dp"
                        android:layout_height="40dp"
                        android:layout_marginLeft="16dp"
                        android:layout_marginStart="16dp"
                        android:background="@drawable/item_bg_transparent"
                        android:src="@drawable/ic_close_black_24dp" />

                    <android.support.v7.widget.AppCompatSeekBar
                        android:id="@+id/seek_bar_volume"
                        android:layout_width="match_parent"
                        android:layout_height="30dp"
                        android:layout_margin="16dp"
                        android:max="100"
                        android:paddingLeft="8dp"
                        android:paddingRight="8dp"
                        android:paddingTop="0dp"
                        android:progress="100"
                        app:theme="@style/AppTheme.SeekBar.Accent" />
                </LinearLayout>
            </io.codetail.widget.RevealFrameLayout>

        </RelativeLayout>
    </LinearLayout>
</FrameLayout>

我的代码:

LLcontainerSBvolume = (LinearLayout) findViewById(R.id.container_seek_bar_volume);
IBcontrolVolume = (ImageButton) findViewById(R.id.bottom_sheet_control_volume);
        IBcontrolVolume.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                LLcontainerSBvolume.setVisibility(View.VISIBLE);
            }
        });

我还尝试过关注ImageButton和其他Views

IBcontrolVolume.requestFocus();
LLcontainerSBvolume.requestFocus();
LLcontainerSBvolume.requestLayout();

问题

接下来是问题:

当我开始Activity时,点击歌曲,打开BottomSheet并点击音量控制ImageButtonSeekbar不会变为VISIBLE。我应点击其他View,然后批量ImageButton也可以。

1 个答案:

答案 0 :(得分:2)

您在启动时将Visibility设置为GONE并使其在运行时可见的布局不在Inside formal android Layout中。它的内部自定义库io.codetail.widget.RevealFrameLayout在运行时更改Visibility时可能存在错误。因此,请勿在{{1​​}}和android:visibility的容器中使用ImageButton。分开做像

AppCompatSeekBar

然后在<ImageButton ----- android:visibility="gone" /> <android.support.v7.widget.AppCompatSeekBar ----- android:visibility="gone" /> 内部使这两个可见或一个可见,如此处

onClick