Tôi đã khai báo GirdView trong bố cục xml như hình dưới đây.Trong Android, làm thế nào tôi có thể giữ cho verticalSpacing luôn bằng với HorizontalSpacing trong GridView?
<GridView
android:id="@+id/movies_gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawSelectorOnTop="true"
android:columnWidth="92dp"
android:numColumns="auto_fit"
android:stretchMode="spacingWidthUniform"
android:gravity="center_horizontal" />
tôi dự định để hiển thị hình ảnh kích thước cố định (hình chữ nhật dọc không vuông) trong GridView.
này tôi đã thiết lập các columnWidth
-auto_fit
để không gian ngang có thể được sử dụng một cách tối ưu bởi GridView.
theo kích thước màn hình có sẵn. Tôi đã đặt stretchMode
thành spacingWidthUniform
để các cột sẽ được đặt ở khoảng cách bằng nhau từ tất cả các cạnh.
Tôi muốn đặt verticalSpacing
bằng horizontalSpacing
. Tôi không thể làm điều đó trong xml ở đây vì thời gian chạy horizontalSpacing
sẽ phụ thuộc vào không gian có sẵn trên màn hình. Ngoài ra, khi định hướng thiết bị được thay đổi, horizontalSpacing
sẽ thay đổi.
Câu hỏi của tôi là:
Làm thế nào tôi có thể chắc chắn rằng
verticalSpacing
sẽ luôn luôn bằng vớihorizontalSpacing
?Làm cách nào để làm cho
GridView
bắt đầu bố trí cột đầu tiên từ đầu cộng với đệm và bố cục kết thúc cột cuối cùng đến cuốiGridView
trừ đệm?
EDIT 1
tôi đã cố gắng @simas giải pháp để sử dụng xem lưới tùy chỉnh đề cập. Đối với điều đó,
Tôi đã sao chép lớp này vào thư mục nguồn của mình.
Bao gồm chế độ xem lưới này trong bố cục xml như được hiển thị bên dưới.
<com.aviras.ashish.popularmoviesapp.widgets.CustomGridView
android:id="@+id/movies_gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="@dimen/grid_item_width"
android:drawSelectorOnTop="true"
android:gravity="center_horizontal"
android:numColumns="auto_fit"
android:stretchMode="spacingWidthUniform"
tools:listitem="@layout/grid_item_movie_poster" />
Đặt adapter để GridView này như hình dưới đây
CustomGridView moviesGridView = (CustomGridView) rootView.findViewById(R.id.movies_gridview); moviesGridView.setAdapter(new MoviesAdapter(rootView.getContext().getApplicationContext(), mMovies));
Nó vẫn cho thấy khoảng cách khác nhau cho các cột và hàng như được hiển thị bên dưới.
EDIT 2
@simas trong câu hỏi thứ hai của 'bắt đầu layouting' Tôi có nghĩa là GridView
nên bắt đầu vẽ cột đầu tiên vào lúc bắt đầu của GridView
và cột cuối cùng của GridView
nên kết thúc ở cuối số GridView
. Ngoài ra, các cột và hàng phải có khoảng cách bằng nhau. Hãy cho tôi biết nếu điều đó làm rõ thêm câu hỏi của tôi.
Cảm ơn bạn đã trả lời câu trả lời này. Sẽ thử điều này và cập nhật ở đây. –
vui lòng xem câu hỏi đã chỉnh sửa của tôi. –