FrameLayout làm gì?


97

Tôi mới học lập trình. Tôi đang sử dụng Bố cục đồ họa sau đó khi tôi đang đọc tệp xml, tôi thấy FrameLayout. Sau đó, tôi tìm kiếm, nhưng tôi không thể tìm thấy một cái gì đó hữu ích. FrameLayout là gì và nó làm gì?



12
Vâng, tôi đã từng ở đó nhưng tôi không thể hiểu được điều đó là gì.
Amin Ghasemi

Câu trả lời:


196

Bạn sử dụng FrameLayout để xếp chồng các chế độ xem con chồng lên nhau, với chế độ xem con gần đây nhất ở trên cùng của ngăn xếp. Trong ví dụ bên dưới, TextView là phiên bản mới nhất, vì vậy nó tự động được đặt trên ImageView.

Ví dụ:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/backgroundImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        android:src="@drawable/bitmapie" />

    <TextView
        android:id="@+id/descTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginTop="70dp"
        android:background="@android:color/holo_blue_light"
        android:padding="10dp"
        android:text="TextView placed at the top of the Imageview"
        android:textColor="@android:color/white"
        android:textSize="22sp" />

</FrameLayout>

Đầu ra:

nhập mô tả hình ảnh ở đây


41
Tôi thích xem mã với đầu ra của họ. Cảm ơn rất nhiều! Đã ủng hộ. Ngoài ra, tôi thích thiết kế bạn đã làm ở đó. Đơn giản nhưng rất tốt!
Tarik

3
Giải thích rất đơn giản, mạnh mẽ nhưng dễ dàng - cảm ơn @ojonugwaochalifu!
Coder Absolute

2
Giải thích rất tốt. Tôi cũng đã đọc phần 'Mô tả của nhà phát triển trên trang chính thức và nghĩ rằng cụm từ "ở trên đầu" có nghĩa nhiều hơn về phía trên cùng của màn hình. Lời giải thích của bạn đã khiến bản chất 3D của nhấp chuột "trên đầu" đối với tôi và bây giờ tôi đã hiểu. Cảm ơn bạn rất nhiều :)
Slartibartfast

1
@ojonugwaochalifu: cảm ơn bạn đã giải thích. Tôi có một truy vấn nhỏ, những thứ chúng tôi đã làm ở đây, chúng tôi có thể làm bằng cách bố trí tương đối. Sau đó, tại sao chúng ta sử dụng bố cục khung?
akashPatra

3
Vâng, chúng gần như làm điều tương tự, nhưng hãy nhớ rằng, một phương pháp thiết kế tốt cho các khung nhìn là sử dụng càng ít lồng ghép càng tốt cho các bố cục của bạn. Khi bạn sử dụng FrameLayout, yêu cầu lồng ghép các chế độ xem lên nhau sẽ ít hơn so với khi bạn sử dụng RelativeLayout.
Ojonugwa Jude Ochalifu

75

FrameLayoutlà cách triển khai đơn giản nhất của ViewGroup. Các chế độ xem con được vẽ trong một ngăn xếp, trong đó chế độ xem được thêm mới nhất được vẽ ở trên cùng. Thông thường, bạn có thể sử dụng một trong các cách tiếp cận tiếp theo hoặc kết hợp chúng:

  1. Thêm một hệ thống phân cấp chế độ xem vào FrameLayout
  2. Thêm nhiều trẻ em và sử dụng android:layout_gravityđể điều hướng chúng

nhập mô tả hình ảnh ở đây

Một cách tiếp cận phổ biến khác của việc sử dụng FrameLayout:

  • như một Fragmentvật chứa
  • như một tổ tiên của phong tục của bạn ViewGroup

23

Có thể coi chữ framenhư khung ảnh thông thường. Bạn làm gì với khung hình đó? bạn có thể đặt ảnh trong khung đó theo từng đỉnh một. Tương tự như trong FrameLayoutchúng ta có thể đặt các dạng xem (Bất kỳ bố cục hoặc tiện ích con nào như nút, văn bản, hình ảnh, v.v.) lên trên cùng như @ojonugwa hiển thị cho bạn dạng xem văn bản trên cùng của Hình ảnh.


Thật tuyệt, tôi đã nghĩ về nó iframenhư thể tôi đến từ phát triển web. Cảm ơn vì lời giải thích đơn giản nhất.
Tarik

19

Bạn có chắc chắn rằng bạn đã tìm kiếm nó không?

Bố cục khung được thiết kế để ngăn một vùng trên màn hình để hiển thị một mục duy nhất. Nói chung, FrameLayout nên được sử dụng để chứa một chế độ xem con, vì có thể khó tổ chức các chế độ xem con theo cách có thể mở rộng đến các kích thước màn hình khác nhau mà không có các chế độ xem con chồng lên nhau.

Tuy nhiên, bạn có thể thêm nhiều trẻ em vào FrameLayout và kiểm soát vị trí của chúng trong FrameLayout bằng cách gán lực hấp dẫn cho từng trẻ, sử dụng thuộc tính android: layout_gravity.

Bí mật của FrameLayout là cách nó bố trí các phần tử con của nó. Mặc dù thông thường được thiết kế để chứa một vật phẩm, nhưng nó sẽ xếp chồng lên nhau một cách vui vẻ. Vì vậy, FrameLayout thực chất là một cách để thao tác thứ tự Z của các khung nhìn trên màn hình.

Điều này cực kỳ hữu ích đối với một số thủ thuật giao diện người dùng từ các yếu tố giống như HUD đến bảng trượt cho đến các chuyển đổi hoạt ảnh phức tạp hơn. Trong bài đăng này, chúng ta sẽ thấy một ví dụ cho từng loại.

FrameLayout được thiết kế để hiển thị một mục duy nhất tại một thời điểm. Bạn có thể có nhiều phần tử trong FrameLayout nhưng mỗi phần tử sẽ được định vị dựa trên phía trên bên trái của màn hình. Các phần tử chồng lên nhau sẽ được hiển thị chồng lên nhau. Tôi đã tạo một bố cục XML đơn giản bằng cách sử dụng FrameLayout để hiển thị cách hoạt động của nó.


8
vâng, tôi đã nhìn thấy chúng. nhưng tôi không thể tìm ra họ đang nói gì.
Amin Ghasemi

Bạn có thể nghĩ nó như một khung ảnh. Về cơ bản những gì bạn đặt sẽ được gán cho bên trái của màn hình. learning-android-easily.com/2013/05/frame-layout-in-androis.html
Metehan

Vì vậy, bạn nên sử dụng nó để hiển thị một mục duy nhất trong hầu hết thời gian.
Metehan

4

Về cơ bản, nó đặt một khung nhìn lên trên một khung nhìn khác, ví dụ:

Thổi phồng văn bản trên hình ảnh

  <FrameLayout>

<ImageView>
<Textview>

  </FrameLayout>

1
nope linearlayout đặt lần lượt ... khung đặt lên trên nó..các ví dụ cho một senario như có lưới trên hình ảnh và có nút hủy trên đầu hình ảnh đó ..... ở đó chúng tôi sử dụng bố cục khung
KOTIOS
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.