2013-01-04 48 views
5

Sono un programmatore Android principiante e sto giocando con JFeinstein's awesome sliding menu, cercando di capire come funziona e implementarlo nelle mie app, ma in tutte le mie implementazioni la vista posteriore copre il 100% del sopra la vista.SlidingMenu non visualizzato correttamente

Inoltre, l'unico modo per tornare alla vista precedente è di premere il pulsante Indietro, quindi nessun "sliding" indietro. Se ho capito bene, questo dovrebbe essere controllato dal BehindViewOffset, ma non sembra che lo stia facendo funzionare. In ogni caso, ecco un esempio di codice po ':

Ecco la mia MainActivity:

public class MainActivity extends SlidingActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     setBehindContentView(R.layout.testing); 

     populate(); 

     SlidingMenu menu = new SlidingMenu(this); 
     menu.setMode(SlidingMenu.LEFT); 
     menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
     menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
     menu.setFadeDegree(0.35f); 
     menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); 
     setSlidingActionBarEnabled(true); 
     menu.setMenu(R.layout.testing); 

    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case android.R.id.home: 
      toggle(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

    private void populate() { 

     ListView lv = (ListView) findViewById(R.id.listView1); 
     String[] values = new String[] { "One", "Two", "Three", "Four", "Five", 
       "Six", "Seven", "Eight", "Nine", "Ten" }; 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, android.R.id.text1, values); 
     lv.setAdapter(adapter); 

    } 
} 

E l'xml di layout:

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

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 

</LinearLayout> 

Purtroppo non riesco a postare uno screenshot fino a quando posso guadagnare di più rep!

Edit: Aggiunta la dimen.xml

<resources> 
    <dimen name="slidingmenu_offset">120dp</dimen> 
    <dimen name="list_padding">10dp</dimen> 
    <dimen name="shadow_width">15dp</dimen> 
    <integer name="num_cols">1</integer> 
</resources> 
+0

Avete aggiunto correttamente 'example/res/values ​​/ dimen.xml'? 'R.dimen.slidingmenu_offset'è correttamente menzionato na? –

+0

Sì, ma nel caso l'avessi aggiunto al post. –

risposta

8

Ok, così ho preso uno sguardo da vicino l'esempio e finnaly ottenuto che funziona modificando

SlidingMenu menu = new SlidingMenu(this); 

per:

SlidingMenu menu = getSlidingMenu(); 

Quindi ecco il codice finale per onCreate dell'attività principale:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    setBehindContentView(R.layout.testing); 

    populate(); 

    SlidingMenu menu = getSlidingMenu(); 

    menu.setMode(SlidingMenu.LEFT); 
    menu.setShadowWidthRes(R.dimen.shadow_width); 
    menu.setShadowDrawable(R.drawable.shadow); 
    menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    menu.setFadeDegree(0.35f); 
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
    setSlidingActionBarEnabled(true); 


} 
+1

Grazie fratello. Stavo affrontando lo stesso problema e la tua soluzione era ciò che ha risolto anche per me! –

+0

Felice di sentirlo! –

Problemi correlati