2016-08-02 20 views
-1
klicken

Ich habe eine Schaltfläche, die ich bei jedem Klick auf eine Bildansicht sichtbar und unsichtbar machen möchte. Ich habe versucht, unsichtbar/sichtbar, aber es wird nicht funktionieren.Schaltfläche wird nicht sichtbar, wenn Sie auf

dies ist mein Code:

public class FullScreenImageAdapter extends PagerAdapter { 

    Button btnClose; 
    private Activity _activity; 
    private ArrayList<String> _imagePaths; 
    private LayoutInflater inflater; 

    // constructor 
    public FullScreenImageAdapter(Activity activity, 
            ArrayList<String> imagePaths) { 
     this._activity = activity; 
     this._imagePaths = imagePaths; 
    } 

    @Override 
    public int getCount() { 
     return this._imagePaths.size(); 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == ((RelativeLayout) object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     TouchImageView imgDisplay; 

     inflater = (LayoutInflater) _activity 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View viewLayout = inflater.inflate(R.layout.layout_fullscreen_image, container, 
       false); 
     hideBar(); 
     imgDisplay = (TouchImageView) viewLayout.findViewById(R.id.imgDisplay); 
     btnClose = (Button) viewLayout.findViewById(R.id.btnClose); 
     Picasso.with(_activity) 
       .load(_imagePaths.get(position)) 
       .placeholder(R.drawable.loader) 
       .fit() 
       .centerCrop().into(imgDisplay); 

     // close button click event 
     btnClose.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       _activity.finish(); 
      } 
     }); 

     imgDisplay.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       hideBar(); 
       hideButton(); 
      } 
     }); 

     ((ViewPager) container).addView(viewLayout); 

     return viewLayout; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     ((ViewPager) container).removeView((RelativeLayout) object); 
    } 

    public void hideBar() { 
     View decorView = _activity.getWindow().getDecorView(); 
     int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; 
     decorView.setSystemUiVisibility(uiOptions); 
    } 

    public void hideButton() { 
     if (btnClose.isShown()){ 
      btnClose.setVisibility(View.INVISIBLE); 
     }else{ 
      btnClose.setVisibility(View.VISIBLE); 
     } 
    } 
    } 

dies mein xml ist:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<com.example.shaka.we.ImageHelper.helper.TouchImageView 
    android:id="@+id/imgDisplay" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:clickable="true" 
    android:scaleType="fitCenter" /> 

<Button 
    android:id="@+id/btnClose" 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginRight="15dp" 
    android:layout_marginTop="15dp" 
    android:background="@drawable/redx" 
    android:paddingBottom="2dp" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:paddingTop="2dp" 
    android:visibility="invisible"/> 

</RelativeLayout> 

kann mir jemand helfen?

+0

Welcher Teil des Codes ist für die Sichtbarkeit verantwortlich? – Olayinka

+0

haben Sie versucht, Logins oder Breakpoints zu setzen, um zu sehen, ob Sie zu dem Block Code gelangen, den Sie erwarten? – dungtatas

+0

können Sie diese Frage für Hilfe überprüfen: http://stackoverflow.com/questions/6796299/view-getvisibility-isshown-return-incorrect-visibility – DysaniazzZ

Antwort

1

Sie können prüfen, ob eine Ansicht durch die Verwendung view.getVisibility() oder view.isShow() sichtbar ist. Aber denken Sie daran: isShow() returns the visibility of this view and all of its ancestors. True if this view and all of its ancestors are visible und getVisibility() returns the visibility status for this view, which are VISIBLE, INVISIBLE, GONE. True if this view is visible. In Ihrem Fall hat die Schaltfläche ein übergeordnetes Element, das immer sichtbar ist. Die btnClose.isShown ist also wahr, sodass Sie die btnClose.setVisibility(View.INVISIBLE); immer ausführen, wenn Sie auf die Bildansicht klicken.

+0

Ich habe es versucht, zeigt es jetzt den richtigen Zustand der Schaltfläche, aber es wird nicht verstecken es. –

1
public void hideButton() { 
    if (btnClose.isShown()){ 
     btnClose.setVisibility(View.INVISIBLE); 
    }else{ 
     btnClose.setVisibility(View.VISIBLE); 
    } 
} 

isShown Aufruf ist kein guter Weg, zu überprüfen, ob eine Ansicht angezeigt wird oder sichtbar. Überprüfen Sie, ob die tatsächliche Sichtbarkeit wie unter

public void hideButton() { 
    if (btnClose.getVisibility() != View.VISIBLE){ 
     btnClose.setVisibility(View.VISIBLE); 
    }else{ 
     btnClose.setVisibility(View.INVISIBLE); 
    } 
} 
+0

Ich habe versucht, meinen Code zu ändern, aber die Schaltfläche wird nicht unsichtbar und sichtbar ... –

+0

Was macht es stattdessen? – Olayinka

+0

Ich habe diesen Code hinzugefügt: 'public void hideButton() { if (btnClose.getVisibility() == View.VISIBLE) { Toast.makeText (_activity, "Wende unsichtbar", Toast.LENGTH_SHORT) .show(); btnClose.setVisibility (View.INVISIBLE); } else { btnClose.setVisibility (View.VISIBLE); Toast.makeText (_activity, "Sichtbar machen", Toast.LENGTH_SHORT) .show(); } } es zeigt immer Turn Invisible aber nicht Sichtbarkeit –

Verwandte Themen