2016-03-20 112 views
1

我試圖爲我的音樂播放器實現控件。Android視圖不可見

這裏是我的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也適用。

+0

爲什麼你做相反,它適用於只是整個'container_seek_bar_volume'視圖不見了, 'seek_bar_volume' –

+0

@ShreeKrishna,是的,因爲'SeekBar'附近還有一個'ImageButton'靠近' –

+0

'你希望它們在第一次啓動時就不可見,並且可以實現可見。那麼這兩個變得可見或只有一個變得可見? –

回答

2

您在啓動時將Visibility設置爲GONE並且在運行時顯示它的佈局不在正式的android Layout之內。其內部自定義庫io.codetail.widget.RevealFrameLayout可能在運行時更改Visibility時存在缺陷。所以請勿在您的ImageButtonAppCompatSeekBar的容器中使用android:visibility。單獨做到像

<ImageButton 
    ----- 
android:visibility="gone" /> 


<android.support.v7.widget.AppCompatSeekBar 
    ----- 
android:visibility="gone" /> 

內。然後onClick使可見光或一個可見作爲您的需求,如在這裏

@Override 
public void onClick(View v) { 
    myImageButton.setVisibility(View.VISIBLE); 
    myAppCompatSeekBar.setVisibility(View.VISIBLE); 
}