Hier ist, was ich getan habe und ich bin froh zu sagen, dass dies für mich funktioniert hat. Ich wollte auch ein 2x2, 3x3 usw. Raster von Elementen, um den gesamten Bildschirm abzudecken. Rasterlayouts halten sich nicht an die Bildschirmbreite. LinearLayouts funktionieren, aber Sie können keine verschachtelten Gewichte verwenden.
Die beste Option für mich war, Fragmente zu verwenden, die ich verwendet habe Tutorial verwendet, um mit dem zu beginnen, was ich tun wollte.
Hier ist ein Code:
Hauptaktivität:
public class GridHolderActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_6);
}
}
activity_main_6 XML (bläst 3 Fragmente auf)
<?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" />
Basisfragment-Layout
<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>
Die Fragmentklasse (behandelt nur die Initialisierung einer benutzerdefinierten Ansicht) bläst 2 Kacheln pro Fragment auf
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();
}
}}
Das ist es!
Dies ist im Wesentlichen eine seltsame Umgehung der Verwendung verschachtelter Gewichte. Es gibt mir ein perfektes 2x3-Raster, das den gesamten Bildschirm sowohl meines 10-Zoll-Tablets als auch meiner HTC-Droiden-DNA ausfüllt. Lass mich wissen, wie es dir geht!