2017-03-10 6 views
0

Also ich habe ein GridLayout - es verwendet Gewicht, um sich richtig zu verteilen. Das Problem ist, dass es nicht richtig auf einigen Geräten nicht angezeigt - zum Beispiel auf Xperia E3 (480 x 854, 218 DPI) oder 3.7" FWVGA Schieber im DesignerGridLayout zeigt nur eine Spalte auf einigen DPI

Hier ist, wie es immer so aussehen soll:.

Looking good!

Hier ist, wie es aus wie auf einigen Geräten aussieht (nur erste Spalte von Gridlayout sichtbar ist und es wird über die rechte Seite des Bildschirms gestreckt selbst):

Not looking good

Hier ist der XML, im Grunde enthält Grid Tasten und die Hauptsache ist hier, dass jeder Knopf hat android:layout_columnWeight="1" android:layout_rowWeight="1"

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:local="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.3"> 
     ... 
    </RelativeLayout> 
<!--Bottom part (buttons)--> 
    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:layout_weight="0.7" 
     android:orientation="vertical"> 
    <!--Scroll bar with all the different functions and constants--> 
     <HorizontalScrollView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.1" 
      android:layout_marginBottom="5dp"> 
      <GridLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scrollbarAlwaysDrawHorizontalTrack="false"> 
       ... 
      </GridLayout> 
     </HorizontalScrollView> 
    <!--THIS IS THE PROBLEM Main buttons for the calculator THIS IS THE PROBLEM--> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.9"> 
      <GridLayout 
       android:id="@+id/mainBtnGrid" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:rowCount="5" 
       android:columnCount="5" 
       android:orientation="vertical"> 
       <Button 
        android:id="@+id/btnClear" 
        android:background="@drawable/button_main" 
        style="@style/button_main_calculator" 
        android:text="C" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnSeven" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="7" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnFour" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="4" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1"/> 
       <Button 
        android:id="@+id/btnOne" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="1" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnSign" 
        android:background="@drawable/button_main" 
        style="@style/button_main_calculator" 
        android:text="±" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnBack" 
        android:background="@drawable/button_main" 
        style="@style/button_main_calculator" 
        android:text="B" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnEight" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="8" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnFive" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="5" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnTwo" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="2" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnZero" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="0" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnTypingPositionSwitch" 
        android:background="@drawable/button_main" 
        style="@style/button_main_calculator" 
        android:text="M" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnNine" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="9" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnSix" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="6" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnThree" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="3" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnDecimal" 
        android:background="@drawable/button_main" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="." 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Space 
        android:layout_width="5dp" /> 
       <Space 
        android:layout_width="5dp" /> 
       <Space 
        android:layout_width="5dp" /> 
       <Space 
        android:layout_width="5dp" /> 
       <Space 
        android:layout_width="5dp" /> 
       <Button 
        android:id="@+id/btnDivide" 
        android:background="@drawable/button_operator" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="/" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnMultiply" 
        android:background="@drawable/button_operator" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="x" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnSubtract" 
        android:background="@drawable/button_operator" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="-" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnAdd" 
        android:background="@drawable/button_operator" 
        android:onClick="Button_OnClick" 
        style="@style/button_main_calculator" 
        android:text="+" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
       <Button 
        android:id="@+id/btnEquals" 
        android:background="@drawable/button_operator" 
        style="@style/button_main_calculator" 
        android:text="=" 
        android:layout_columnWeight="1" 
        android:layout_rowWeight="1" /> 
      </GridLayout> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 

Ich habe keine Ahnung, was damit zu tun, ich meine, es ist nicht ständig passiert! Vielen Dank für das Lesen, ich werde alle Vorschläge sehr schätzen.

+0

'android: layout_columnWeight' und' android: layout_rowWeight' werden nicht unterstützt vor Android API 21, haben Sie die Android-Version Ihres Geräts überprüft? –

+0

Ja. Ich habe es auf Emulatoren mit API 25 getestet. Als ich es auf einem physischen Gerät mit API 19 getestet habe, habe ich versucht, GridLayout aus der Support-Bibliothek zu verwenden, und das Ergebnis war das gleiche. – ResoDev

Antwort

0

Ich habe endlich eine Lösung für dieses Problem gefunden. Ich habe aufgegeben, und ich habe alles programmatisch gemacht, aber dann habe ich wieder angefangen, mit dem Xml herumzuspielen. Es stellt sich heraus, dass Sie nur android:layout_width="0dp" für jede Schaltfläche angeben müssen. Dann sieht es so aus, wie es auf allen verschiedenen Bildschirmauflösungen und -größen sein soll.

Ich vermute, dies geschieht, weil auf kleineren Bildschirmen der Raster-Layout selbst war überfüllt, bevor ich

android:layout_columnWeight="1" android:layout_rowWeight="1"

angegeben haben, so dass es „nicht wissen, wie weit sie strecken“.

Jetzt jedoch, wenn die Breite auf 0dp eingestellt ist, ist es nirgendwo mehr überfüllt und deshalb funktioniert das Hinzufügen von Gewichten jetzt einwandfrei.

Ich hoffe, dass dies einigen von Ihnen hilft - das war ein wirklich frustrierendes Problem zu haben!

Verwandte Themen