2017-10-03 18 views
-2

Ich versuche, 4x4 Tasten in Gitter-Layout, die in Relativelayout ist passen.Alles ist in der virtuellen Maschine in Ordnung, aber auf meiner Galaxie s6, Tasten, die in der richtigen passen nicht gut. Meine XML-Datei:Android GridLayout Fitting Error

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:background="@drawable/grey_wp" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.uruskan.shock.myapplication.GameScreen"> 

    <TextView 
    android:id="@+id/TextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="15dp" 
    android:text="" 
    android:textSize="24sp" /> 
    <GridLayout 
    android:id="@+id/gridlayout" 
    android:columnCount="4" 
    android:rowCount="4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/TextView" 
    android:layout_marginTop="25sp" 
    > 
    </GridLayout> 

My Screen von der virtuellen Maschine virtualmachinescreenshoot My Screen von echten Galaxy S6 galaxys6screenshoot Wie kann ich diese app machen sieht aus wie auf Emulator? Update: Ich habe meinen Emulator auf Galaxy S6 geändert und nun ist auch der Emulator defekt. enter image description here

Antwort

0

gelöst. Sie müssen LayoutParameters in Ihrer Kart-Klasse verwenden.

GridLayout.LayoutParams params = new GridLayout.LayoutParams(GridLayout.spec(GridLayout.UNDEFINED), GridLayout.spec(GridLayout.UNDEFINED, 1, 1f)); 
    params.height = GridLayout.LayoutParams.WRAP_CONTENT; 
    params.width = 0; 
    this.setLayoutParams(params); 

Jetzt ist es in Ordnung. enter image description here

0

Versuch layout_weight = 1 und layout_width = 0DP auf den Breiten jeder Zelle zu verwenden, wenn sie imageViews sind, auch hinzufügen adjustViewBounds = true und Scaletype = centerInside

+0

Sie sind Tasten. (Android.support.v7.widget.AppCompatButton) –

+0

Ich brauche noch –

+0

die layout_width = 0 und layout_weight = 1 Sachen auf den Tasten Versuchen helfen und sehen, ob das hilft. Ich war immer frustriert zu versuchen, Rasterlayout zu arbeiten, wie ich es auch will, so gibt es andere Optionen für Layouts. Wenn Sie wissen, dass es immer 16 Buttons geben wird, könnten Sie einfach ein LinearLayouts, TableLayout, RelativeLayout, etc. verwenden. Verschachtelte LinearLayouts wären die einfachsten – Chad