2013-10-18 18 views
8

Tôi đã tạo một ứng dụng với một hoạt động sử dụng ngăn điều hướng để mở một số đoạn khác nhau. Tôi có drawbaroggle actionbar, nhưng nó không phải là rất có thể nhìn thấy. Nếu tôi đặt nút trong chế độ onCreateView trong đoạn chính của mình (đoạn xuất hiện khi ứng dụng của tôi khởi động lần đầu tiên), làm cách nào để mở ngăn điều hướng do hoạt động của tôi kiểm soát?Làm cách nào để mở ngăn điều hướng trên nút bấm trong đoạn chính?


Điều này có vẻ hiệu quả. Câu trả lời đơn giản hơn nhiều so với những gì tôi nghĩ.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View fragView = inflater.inflate(R.layout.mainmenu, container, false); 
    button1 = (Button) fragView.findViewById(R.id.button1);   
    mDrawerLayout = (DrawerLayout)getActivity().findViewById(R.id.drawer_layout); 
    mDrawerList = (ListView)getActivity().findViewById(R.id.left_drawer); 
    button1.setOnClickListener(this); 
    return fragView; 
} 


@Override 
public void onClick(View v) {  

     mDrawerLayout.openDrawer(mDrawerList);   

    } 

Cảm ơn câu trả lời của bạn.

+0

bạn đã nhận được câu trả lời – DKV

Trả lời

38

nếu bạn cần mở nắp trượt:

mDrawerLayout.openDrawer(Gravity.LEFT); //Edit Gravity.START need API 14 

nếu bạn cần đóng nắp trượt

mDrawerLayout.closeDrawer(Gravity.LEFT); //Edit Gravity.START need API 14 

VÍ DỤ

mDrawerLayout của tôi là instanced đây:

mDrawerLayout = (DrawerLayout)findViewById(R.id.my_drawer_layout); 

trạng thái trượt của tôi:

mSlideState=false; 

nếu bạn cần phải biết tình trạng đơn trượt (đóng cửa, mở cửa). Sử dụng mã này:

mDrawerLayout.setDrawerListener(new ActionBarDrawerToggle(this, 
    mDrawerLayout, 
    R.drawable.ic_menu_slide, 
    0, 
    0){ 
@Override 
public void onDrawerClosed(View drawerView) {      
    super.onDrawerClosed(drawerView); 
    mSlideState=false;//is Closed 
} 
@Override 
public void onDrawerOpened(View drawerView) {      
    super.onDrawerOpened(drawerView); 
    mSlideState=true;//is Opened 
}}); 

cuối cùng. Bạn có thể sử dụng sự kiện click của bạn như thế này:

public void clickEventSlide(){ 
if(mSlideState){     
    mDrawerLayout.closeDrawer(Gravity.END); 
}else{    
    mDrawerLayout.openDrawer(Gravity.END); 
}} 

trong trường hợp của tôi đơn trượt của tôi là ở bên phải (Gravity.END), nhưng nếu bạn cần ở bên trái, hãy thử với Gravity.START

này làm việc cho tôi, tôi hy vọng giải quyết được vấn đề của bạn.

+1

bạn có thể xem xét 'mDrawerLayout.isDrawerOpen (drawerView)' thay vì cờ – Rowan

+0

tôi muốn bố cục này ở trên chế độ xem của tôi. TRONG NÀY LAYOUT đang chuyển sang một bên. tôi nên làm gì? – DKV

+0

trong xml của bạn, cuối cùng (dưới cùng nhất) tuyên bố xem sẽ có z-index cao nhất (trên cùng) theo mặc định, trên câu trả lời nên được chấp nhận nếu nó giải quyết vấn đề. – Talha

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