2016-03-20 22 views
1

Ich versuche, Steuerelemente für meine Musik-Player zu implementieren.Android-Ansicht wird nicht sichtbar

Hier ist meine 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> 

Und mein Code:

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); 
      } 
     }); 

Ich habe versucht, auch Views für ImageButton und anderen Fokus anfordern:

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

PROBLEM

Das Problem ist, weiter:

Wenn ich meine Activity, klicken Sie auf Song starten, öffnen BottomSheet und klicken Sie auf Lautstärkeregler ImageButton, Seekbar nicht wird VISIBLE. Ich sollte auf andere View klicken und dann Volumen ImageButton funktioniert auch.

+0

Warum sind Sie ganze 'container_seek_bar_volume' Ansicht GONE machen, statt es nur Anwendung 'seek_bar_volume' –

+0

@ShreeKrishna, ja, da es auch' ImageButton' in der Nähe von 'SeekBar' gibt –

+0

soll beides beim ersten Start unsichtbar sein und pragmatisch sichtbar werden. Dann wurden beide sichtbar oder nur eins wurde sichtbar? –

Antwort

2

Das Layout, das Sie Visibility zu GONE beim Start festlegen und es zur Laufzeit sichtbar machen sind nicht Inside formal Android Layout. Seine interne benutzerdefinierte Bibliothek io.codetail.widget.RevealFrameLayout, die Fehler bei der Änderung Visibility zur Laufzeit haben kann. Verwenden Sie daher nicht android:visibility im Container Ihrer ImageButton und AppCompatSeekBar. Machen Sie es separat Wie

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


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

Dann innen onClick machen beide sichtbar oder eine sichtbar als Ihre Anforderungen wie hier

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