2013-01-04 24 views
5

Tôi là người lập trình Android mới bắt đầu và tôi đang đùa giỡn với JFeinstein's awesome sliding menu, cố gắng tìm hiểu cách hoạt động và triển khai nó trong ứng dụng của mình, nhưng trong tất cả các triển khai của tôi, chế độ xem phía sau bao gồm 100% trên xem.TrượtMenu không hiển thị đúng cách

Ngoài ra, cách duy nhất để quay lại chế độ xem ở trên là nhấn nút quay lại, vì vậy, không còn "sliding" quay lại. Nếu tôi hiểu chính xác, điều này nên được kiểm soát bởi BehindViewOffset, nhưng tôi dường như không nhận được nó để làm việc. Dù sao, đây là một ít mã mẫu:

Dưới đây là tôi 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); 

    } 
} 

Và xml bố trí:

<?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> 

Đáng buồn là tôi không thể đăng ảnh chụp màn hình cho đến khi tôi kiếm được đại diện nhiều hơn nữa!

Edit: gia tăng các 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

Bạn đã thêm đúng 'example/res/values ​​/ dimen.xml' chưa? 'R.dimen.slidingmenu_offset.' được đề cập đúng na? –

+0

Có, nhưng chỉ trong trường hợp tôi đã thêm nó vào bài đăng. –

Trả lời

8

Ok, vì vậy tôi đã nhìn kỹ ví dụ và finnaly nhận nó làm việc bằng cách thay đổi

SlidingMenu menu = new SlidingMenu(this); 

cho:

SlidingMenu menu = getSlidingMenu(); 

Vì vậy, đây là mã cuối cùng cho hoạt động chính trênCreate:

@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

Cảm ơn bro. Tôi đã phải đối mặt với cùng một vấn đề và giải pháp của bạn là những gì cố định nó cho tôi quá! –

+0

Rất vui khi biết điều đó! –

Các vấn đề liên quan