2013-01-22 35 views
5

tôi cần phải di chuyển nội dung của màn hình sang bên trái, vì vậy tôi có thể nhường chỗ cho menu trượt bên phải enter image description hereLàm thế nào để di chuyển một nội dung bố trí bên ngoài màn hình android

Đây là mã:

// modify content layout params 
    try { 
     content = ((LinearLayout) act.findViewById(android.R.id.content) 
       .getParent()); 
    } catch (ClassCastException e) { 
     /* 
     * When there is no title bar 
     * (android:theme="@android:style/Theme.NoTitleBar"), the 
     * android.R.id.content FrameLayout is directly attached to the 
     * DecorView, without the intermediate LinearLayout that holds the 
     * titlebar plus content. 
     */ 
     content = (FrameLayout) act.findViewById(android.R.id.content); 
    } 
FrameLayout.LayoutParams pr = (android.widget.FrameLayout.LayoutParams) content 
        .getLayoutParams(); 
      pr.rightMargin = menuSize; 
      content.setLayoutParams(pr); 
// add the slide menu to parent 
    parent = (FrameLayout) content.getParent(); 

    try { 
     parent = (FrameLayout) content.getParent(); 
    } catch (ClassCastException e) { 
     /* 
     * Most probably a LinearLayout, at least on Galaxy S3. 
     */ 
     LinearLayout realParent = (LinearLayout) content.getParent(); 
     parent = new FrameLayout(act); 
     realParent.addView(parent, 0); // add FrameLayout to real parent of 
             // content 
     realParent.removeView(content); // remove content from real parent 
     parent.addView(content); // add content to FrameLayout 
    } 

    LayoutInflater inflater = (LayoutInflater) act 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    menu = inflater.inflate(R.layout.slidemenu, null); 

    FrameLayout.LayoutParams lays = new FrameLayout.LayoutParams(menuSize, 
      FrameLayout.LayoutParams.MATCH_PARENT, Gravity.RIGHT); 
    lays.setMargins(0, statusHeight, 0, 0); 
    menu.setLayoutParams(lays); 
    parent.addView(menu); 

nhưng những gì tôi nhận được là: enter image description here nội dung chỉ được thay đổi kích cỡ để phù hợp với màn hình, làm thế nào tôi có thể làm công việc này? Btw tôi không thể sửa đổi bố cục nội dung bố cục tương đối của nó bằng surfaceview, nhưng nó sẽ hoạt động với bất kỳ bố cục nào bởi vì tôi sửa đổi DecorView đó là khung nhìn trên cùng của trang

Trả lời

3

Để di chuyển 'Màn hình', bạn cần gọi hàm getLayoutParams() trên Chế độ xem, sửa đổi nó khi cần và sau đó gọi setLayoutParams() trên Chế độ xem.

Nhưng đối với một hướng dẫn tuyệt vời để làm thế nào để thực hiện một slide trong menu xem tại đây: -

http://android.cyrilmottier.com/?p=658

Để thêm sự giúp đỡ hơn nữa, đây là một bố cục mà đạt được là những gì tôi nghĩ rằng bạn đang sau: -

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

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/blue" > 


</LinearLayout> 

<LinearLayout 
    android:layout_width="200dip" 
    android:layout_height="match_parent" 
    android:layout_marginLeft="-100dip" 
    android:background="@color/grey_divider" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 

</LinearLayout> 

này sẽ dẫn đến việc LinearLayout thứ hai xuất hiện 50% off ở phía bên tay trái của màn hình. FYI LinearLayout bạn đang di chuyển sẽ cần một chiều rộng tuyệt đối. Nhưng bạn có thể định nghĩa nó thành FILL_PARENT trong xml của bạn, và sau đó lấy chiều rộng và đặt nó thành giá trị tuyệt đối trong mã lần đầu tiên bạn đặt lề thành giá trị âm.

Hy vọng điều này sẽ hữu ích.

+0

tôi làm điều này ở đây FrameLayout.LayoutParams pr = (android.widget.FrameLayout.LayoutParams) content .getLayoutParams(); pr.rightMargin = menuSize; content.setLayoutParams (pr); và menu và hình động và tất cả đều sẵn sàng tôi chỉ cần sửa lỗi này – user924941

+0

@ user924941 Tôi cập nhật câu trả lời của mình hôm qua với một ví dụ, điều này có giúp trả lời câu hỏi của bạn không? – Ryan

1

Sử dụng bố cục lót làm trọng lượng cho cả hai bên trái và bố cục đúng bố cục. đặt chế độ xem trái của bạn ở chế độ ngangScrollview cần được cuộn ra khỏi màn hình.

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