Đây là những gì tôi đã làm và tôi rất vui khi nói rằng điều này làm việc cho tôi. Tôi cũng muốn một lưới các mặt hàng 2x2, 3x3, vv để bao phủ toàn bộ màn hình. Gridlayouts không tuân thủ chiều rộng của màn hình. Loại công việc tuyến tính nhưng bạn không thể sử dụng trọng số lồng nhau.
Tùy chọn tốt nhất cho tôi là sử dụng Fragment tôi đã sử dụng hướng dẫn này để bắt đầu với những gì tôi muốn làm.
Đây là một số mã:
Hoạt động chủ yêu:
public class GridHolderActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_6);
}
}
Activity_main_6 XML (thổi phồng 3 đoạn)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/frag1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:name=".TwoHorizontalGridFragment"
tools:layout="@layout/two_horiz" />
<fragment
android:id="@+id/frag2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:name=".TwoHorizontalGridFragment"
tools:layout="@layout/two_horiz" />
<fragment
android:id="@+id/frag3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:name=".Grid.TwoHorizontalGridFragment"
tools:layout="@layout/two_horiz" />
Bố trí mảnh cơ sở
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_height="match_parent">
<ImageQueue
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/img1"
android:layout_weight="1"/>
<ImageQueue
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/img2"
android:layout_weight="1"/>
</LinearLayout>
Lớp Fragment (chỉ xử lý khởi tạo chế độ xem tùy chỉnh) thổi phồng 2 ô cho mỗi đoạn
public class TwoHorizontalGridFragment extends Fragment {
private View rootView;
private ImageQueue imageQueue1;
private ImageQueue imageQueue2;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
/**
* Inflate the layout for this fragment
*/
rootView = inflater.inflate(
R.layout.two_horiz, container, false);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
imageQueue1 = (ImageQueue)rootView.findViewById(R.id.img1);
imageQueue2 = (ImageQueue)rootView.findViewById(R.id.img2);
imageQueue1.updateFiles();
imageQueue2.updateFiles();
}
}
Đó là nó!
Đây là một công việc kỳ lạ xung quanh việc sử dụng trọng lượng lồng nhau, về cơ bản. Nó mang lại cho tôi một lưới 2x3 hoàn hảo, lấp đầy toàn bộ màn hình của cả máy tính bảng 10 inch và HTC droid DNA của tôi. Hãy cho tôi biết nó ảnh hưởng đến bạn thế nào!