Tôi đang làm việc trong thiết kế material design api & muốn hiển thị một số dữ liệu ở định dạng lưới. Tôi đã thử cả hai GridLayout
và StaggeredGridlayout
và cả hai đều giống nhau. Để biết thông tin chung, tôi muốn hỏi sự khác biệt giữa Gridlayout
và StaggeredGridlayout
là gì?
Cảm ơn bạn.Android - Sự khác biệt giữa Gridlayout và Gridlayout so le
Trả lời
Lưới xem: Đó là một ViewGroup
hiển thị các mục trong lưới có thể cuộn hai chiều. Trong mỗi khung hình Lưới này có cùng kích thước (Chiều cao và chiều rộng). Chế độ xem lưới hiển thị các mục đối xứng trong chế độ xem.
le Lưới Xem: Nó cơ bản là một phần mở rộng cho Grid View
nhưng trong này mỗi Lưới là thay đổi kích thước (chiều cao và chiều rộng). Chế độ xem lưới so le hiển thị các mục không đối xứng trong chế độ xem.
Hướng dẫn thực hiện so le Lưới Xem:
A lưới so le Bố cục bao gồm nhiều cột có nhiều hàng có kích thước khác nhau.
Nó cho phép chế độ xem cột/hàng linh hoạt với đầu trang và chân trang và trông khá dễ thực hiện, mặc dù người dùng Gradle sẽ có thời gian dễ dàng hơn những người làm việc với Eclipse và Ant. Đây là giao diện trông giống như trong Etsy Github app mà nó được phát triển.
Trong khi đó, GridLayout là bố cục đặt con của nó vào lưới hình chữ nhật.
Nó đã được giới thiệu ở cấp API 14 và gần đây đã được backported trong Thư viện hỗ trợ. Mục đích chính của nó là để giải quyết vấn đề liên kết và hiệu suất trong các bố trí khác. Hãy xem this tutorial nếu bạn muốn tìm hiểu thêm về GridLayout.
StaggeredGridlayout
- Điều này sẽ đưa trẻ em ra khỏi sự hình thành lưới so le.
- Hỗ trợ bố cục dọc & dọc cũng như khả năng bố cục trẻ em ngược lại.
- Lưới so le có thể có khoảng trống ở các cạnh của bố cục.
- Để tránh các khoảng trống,
StaggeredGridLayoutManager
có thể bù trừ các nhịp độc lập hoặc di chuyển các mục giữa các nhịp. Bạn có thể kiểm soát hành vi này quasetGapStrategy(int)
.
GridLayout
- này đưa ra con của nó trong một lưới hình chữ nhật.
- Lưới bao gồm một tập hợp các đường vô cùng mỏng tách riêng khu vực xem thành các ô.
- Trẻ em chiếm một hoặc nhiều ô liền kề, như được xác định bởi thông số
rowSpec
vàcolumnSpec
bố cục của chúng.
hình ảnh của bạn không phải là StaggeredGridLayout, nó tùy chỉnh GridLayout từ https://github.com/felipecsl/AsymmetricGridView –
Lưới Layout (API Level 14): Một cách bố trí mà đặt con của nó trong một lưới hình chữ nhật. Số hàng và cột trong lưới có thể được khai báo sử dụng thuộc tính android:rowCount
và android:columnCount
. Thông thường, tuy nhiên, nếu số cột được khai báo thì GridLayout sẽ suy ra số hàng dựa trên số lượng ô bị chiếm đóng khiến việc sử dụng thuộc tính rowCount không cần thiết. Tương tự, định hướng của GridLayout có thể được xác định tùy chọn thông qua thuộc tính android:orientation
.
Tôi nghĩ rằng không có StaggeredGridLayout riêng biệt. Dưới đây là những điều chúng ta có
StaggeredGridLayoutManager: Nó là một trong những người quản lý một cách bố trí sử dụng trong Recyclerview.A LayoutManager đẻ ra trẻ em trong một hình lưới so le. Nó hỗ trợ ngang & bố trí dọc cũng như khả năng bố trí trẻ em ngược lại.
le GridView: Các StaggeredGridView cho phép người dùng tạo một GridView với hàng không đồng đều tương tự như cách Pinterest trông. Bao gồm OnItemClickListener và OnItemLongClickListener, bộ chọn và khôi phục vị trí cố định của riêng bạn. Vui lòng xem this ví dụ.
Thời gian của tôi tại Oodles Technologies đã dạy tôi về sự so le. Tôi sẽ chia sẻ điều đó.
StaggeredGridLayout là Trình quản lý bố cục, nó giống như chế độ xem lưới nhưng trong lưới này mỗi chế độ xem có kích thước riêng (chiều cao và chiều rộng). Nó hỗ trợ cả bố cục dọc và ngang.
Dưới đây là một số bước cơ bản để tạo ra một grid- so le
1) Tạo một cái nhìn.
Như chúng ta biết staggeredgrid không phải là một cái nhìn trực tiếp nó là một layoutmanager mà đẻ ra trẻ em trong một sự hình thành lưới so le. Chúng tôi sử dụng RecyclerView làm chế độ xem cho lưới ô vuông. đây là recyclerview của chúng tôi trong bố trí
<relativelayout android:layout_height="match_parent" android:layout_width="match_parent" android:paddingtop="@dimen/activity_vertical_margin" tools:context="com.deepanshu.staggered_gridlayout.MainActivity" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
<android.support.v7.widget.recyclerview android:id="@+id/favPlaces" android:layout_height="match_parent" android:layout_width="match_parent">
</android.support.v7.widget.recyclerview></relativelayout>
2) Set StaggeredGridLayout LayoutManager.
Khi chế độ xem của chúng tôi sẵn sàng, hãy sử dụng Layoutmanager để tạo lưới trên chế độ xem.
RecyclerView favPlaces = (RecyclerView) findViewById(R.id.favPlaces);
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
favPlaces.setLayoutManager(layoutManager);
favPlaces.setHasFixedSize(true);
3) Bộ điều hợp để tăng lượt xem so le.
Để thổi phồng các dữ liệu dưới dạng lưới đầu tiên chúng ta cần một cách bố trí này sẽ đại diện cho rằng data.We đang sử dụng CardView cho điều này và cách bố trí là-
<android.support.v7.widget.cardview android:layout_height="wrap_content" android:layout_width="match_parent" app:cardcornerradius="4dp" app:cardusecompatpadding="true">
<linearlayout android:background="@color/colorPrimary" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical">
<imageview android:adjustviewbounds="true" android:id="@+id/placePic" android:layout_height="match_parent" android:layout_width="match_parent" android:scaletype="fitXY">
<textview android:gravity="center" android:id="@+id/placeName" android:layout_height="wrap_content" android:layout_width="match_parent" android:textsize="16sp">
</textview></imageview></linearlayout>
</android.support.v7.widget.cardview>
</linearlayout>
Sau đó Chúng tôi thiết lập của chúng tôi tất cả các bước cơ bản, đã đến lúc hoàn thành hoạt động chính của chúng tôi. đây là mã hoàn chỉnh các hoạt động- chính
public class MainActivity extends AppCompatActivity {
int placeImage[]= {R.drawable.agattia_airport_lakshadweep,R.drawable.nainital,R.drawable.goa,
R.drawable.lotus_temple,R.drawable.valley_of_flowers,R.drawable.ranikhet,R.drawable.dehradun,R.drawable.nainital1};
String placeName[]= {"Lakshadweep, India","Nainital, India","Goa, India","Lotus-Temple, India","Valley-Of-Flowers, India","Ranikhet, India",
"Dehradun, India","Nainital, India"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView favPlaces = (RecyclerView) findViewById(R.id.favPlaces);
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
favPlaces.setLayoutManager(layoutManager);
favPlaces.setHasFixedSize(true);
ArrayList<PlaceDetails> placeList = getPlaces();
StaggeredAdapter staggeredAdapter = new StaggeredAdapter(placeList);
favPlaces.setAdapter(staggeredAdapter);
}
private ArrayList<PlaceDetails> getPlaces() {
ArrayList<PlaceDetails> details = new ArrayList<>();
for (int index=0; index<placeImage.length;index++){
details.add(new PlaceDetails(placeImage[index],placeName[index]));
}
return details;
}
}
- 1. Android: Khoảng cách GridLayout giữa các mục
- 2. Khoảng cách giữa mục GridLayout
- 3. GridView VS GridLayout trong Ứng dụng Android
- 4. Android GridLayout nhận hàng/cột
- 5. GridLayout Android tràn màn hình
- 6. Lịch GridLayout
- 7. Cuộn ngang, ngang và dọc cho GridLayout
- 8. Mở rộng GridLayout
- 9. Ẩn hàng trong GridLayout
- 10. ScrolledComposite parent with GridLayout
- 11. Java Swing GridLayout "Cell span"?
- 12. Sự khác nhau giữa AVAudioSessionPortBluetoothHFP, A2DP và LE là gì?
- 13. Xem trung tâm theo chiều ngang bên trong Android GridLayout
- 14. Thiết lập gói hỗ trợ Android v7 cho eclipse - GridLayout
- 15. Android: Cách tạo GridLayout [không phải GridView] theo lập trình?
- 16. Sự khác biệt giữa tệp .so và .lo là gì?
- 17. "Phương pháp so sánh vi phạm hợp đồng chung của nó!" - TimSort và GridLayout
- 18. Sự khác biệt giữa cocos2d-android và cocos2d-android-1
- 19. Sự khác biệt giữa android: id và android: labelFor?
- 20. Sự khác biệt giữa android: text = "@ string" và android: text = "..."
- 21. Sự khác biệt giữa android: windowBackground và android: colorBackground?
- 22. Sự khác biệt giữa IntelliJ IDEA 13 và Android Studio
- 23. Sự khác biệt giữa Android Palette màu
- 24. Tôi có thể kết hợp SWT GridLayout và FillLayout
- 25. Thay đổi độ rộng của GridLayout
- 26. Sự khác biệt giữa $ (...) và `...`
- 27. Sự khác biệt giữa. và #
- 28. Sự khác biệt giữa $ * và $ @
- 29. Sự khác biệt giữa ". +" Và ". +?"
- 30. Sự khác biệt giữa "**/* /" và "** /"?
GridView là đối xứng và bất đối xứng GridView so le là .. –