2011-12-21 47 views
21

tôi gặp sự cố. Tôi phát triển ứng dụng android.Làm cách nào để tôi có thể thay đổi bố cục xml thành bố cục khác trên mã java?

tôi bao gồm bố trí thứ hai để bố trí đầu tiên như thế này:

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="300dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="clip_horizontal" 
    android:layout_alignParentLeft="true" 
    android:id="@+id/rlMenu" 
    > 

    <Button 
     android:id="@+id/bMusteriler" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Musteriler" 
     android:textSize="45dp" 
     android:layout_alignParentLeft="true" 
     /> 

</RelativeLayout> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_toRightOf="@id/rlEkranlar" 
    > 

    <include 
     android:id="@+id/include1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     layout="@layout/ikinci" /> 

</RelativeLayout> 
</RelativeLayout> 

Vấn đề là làm thế nào tôi có thể thay đổi bao gồm bố trí khi nhấp vào một nút (trên mã java)?

Xin lỗi vì tiếng Anh của tôi. Cảm ơn.

+0

tạo ra một tập tin xml mới và hoạt động và gọi thứ hai thông qua ý định. –

+0

hãy sửa đổi câu hỏi của bạn, nó không rõ ràng lắm. –

+0

@YugandharBabu Tôi muốn thay đổi bố cục = "@ layout/ikinci" thành layout = "@ layout/third_layout" khi nhấp vào nút. – UurYsr

Trả lời

51

Tôi đề xuất ViewFlipper bên trong RelativeLayout trong số các tuyên bố include của bạn. Thử cách này:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/vf" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <include android:id="@+id/include1" layout="@layout/ikinci" /> 
    <include android:id="@+id/map" layout="@layout/third_layout" /> 

</ViewFlipper> 

Access ViewFlipper như dưới đây. bố trí Ban đầu đầu tiên là đầu ra:

ViewFlipper vf = (ViewFlipper)findViewById(R.id.vf); 

Đối Nút OnClickListener:

button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       vf.setDisplayedChild(1); 
      } 
     }); 
+0

Cảm ơn rất nhiều. Bạn đã khắc phục sự cố =)) – UurYsr

+0

Nếu bạn có câu trả lời, hãy đánh dấu nó. bạn được chào đón bạn thân –

+0

Tôi nghĩ rằng tôi đã làm, cảm ơn một lần nữa. – UurYsr

0

Bạn đã cố gắng lấy phiên bản hiện tại của xml bạn đã bao gồm xml khác và sử dụng findViewById(). Xem v là bố trí đầu tiên và chống lại quan điểm này bạn sử dụng .findViewById()

+0

tôi đã thử điều này: Bố cục L1 = (Bố cục) findViewById (R.id.layout1); Có lỗi chuyển đổi. Không thể chuyển đổi dạng xem sang bố cục. Tôi đang làm điều gì sai? – UurYsr

+0

Bố cục? Không có Chế độ xem như vậy trong SDK miễn là bạn đã tạo SDK của riêng mình. Đảm bảo bạn đã tham chiếu đúng tên lớp học. Giống như: LinearLayout, RelativeLayout, FrameLayout .... –

+0

Tôi hiểu, tôi sẽ thử điều này. Cảm ơn – UurYsr

20

Có hai cách để thay đổi bố cục trong mã:

A. Thay đổi tầm nhìn. Bao gồm bố trí kéo khác nhau trong xml của bạn:

<include 
    android:id="@+id/id1" 
    android:visibility="visible"/> 
<include 
    android:id="@+id/id2" 
    android:visibility="gone"/> 

và trong mã này sử dụng:

findViewById(R.id.id1).setVisibility(View.GONE); 
findViewById(R.id.id2).setVisibility(View.VISIBLE); 

B. Tự thêm trẻ em. Sử dụng xml giống như bạn sử dụng ngay bây giờ và thêm vào mã bạn có thể thêm hoặc xóa trẻ em:

yourRelativeLayout.removeAllViews(); 
yourRelativeLayout.addView(viewToInclude); 

Offtopic:

Bạn không cần phải viết xmlns:android param trong RelativeLayout. Chỉ dành cho thẻ hàng đầu trong tệp bố cục.

+0

Cảm ơn @ Jin35, tôi đã thử giải pháp của bạn và đã khắc phục sự cố. – UurYsr

+3

Tôi đã nhầm lẫn vì Intellij 14 không cung cấp "khả năng hiển thị" trong các tùy chọn tự động hoàn thành. –

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