1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

TableLayout mit Gitternetzlinien

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von pyretta, 19.04.2011.

  1. pyretta, 19.04.2011 #1
    pyretta

    pyretta Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    95
    Erhaltene Danke:
    1
    Registriert seit:
    24.01.2011
    Hallo,

    ich habe ein TableLayout erstellt das Gitternetzlinien "simuliert".

    Der Code sieht etwa so aus:

    Code:
    <ScrollView
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:padding="10dip"   
      android:background="@color/schwarz"
      >
    <LinearLayout
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent"
        android:gravity="center_horizontal"
    
    >  
    <TableLayout  
    android:paddingLeft="1dip" 
    android:paddingRight="1dip" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@color/anthrazit"
    android:stretchColumns="1">
    
        <TableRow 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:background="@color/schwarz"
        android:layout_marginBottom="1dip"
        android:orientation="horizontal">
            <LinearLayout
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:orientation="horizontal"
        android:background="@color/anthrazit"
        >    
        <TextView
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:textColor="@color/weiss"
        android:text="1. Spalte"
        android:paddingLeft="40dip" 
        android:paddingRight="40dip"
        android:layout_marginRight="1dip"
        android:background="@color/schwarz"
        android:paddingRight="80dip"
        >
        </TextView>    
        <TextView
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:textColor="@color/weiss"
        android:text="2. Spalte"
        android:paddingLeft="40dip" 
        android:paddingRight="40dip"
        android:layout_marginRight="1dip"
        android:background="@color/schwarz">
        </TextView>    
        <TextView
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:textColor="@color/weiss"
        android:text="3. Spalte"  
        android:paddingLeft="40dip" 
        android:paddingRight="40dip"
        android:background="@color/schwarz">
        </TextView>    
        </LinearLayout>
        </TableRow> 
    
    <TableRow 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:background="@color/schwarz"
        android:layout_marginBottom="1dip">    
        <LinearLayout
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:orientation="horizontal"
        android:background="@color/anthrazit"
        >
        <ImageView
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"     
        android:layout_marginRight="1dip"
        android:background="@color/hellgrau"
        android:src="@drawable/symbol_1"     
        android:paddingLeft="23dip" 
        android:paddingRight="22dip"></ImageView>    
        <TextView
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:textColor="@color/schwarz"
        android:text="Beschreibender Text"
        android:textSize="11sp"
        android:paddingLeft="21dip" 
        android:paddingRight="21dip"    
        android:paddingTop="7dip" 
        android:paddingBottom="7dip"
        android:layout_marginRight="1dip"
        android:background="@color/hellgrau"
        
        ></TextView>
        <LinearLayout
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:background="@color/hellgrau">
        <Button
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:textColor="@color/schwarz"
        android:background="@drawable/button"      
        android:layout_marginLeft="20dip" 
        android:layout_marginRight="20dip"
        android:layout_marginTop="2dip"
        android:layout_marginBottom="1dip">
        </Button>    
        </LinearLayout>     
        </LinearLayout> 
        </TableRow> 
    
    </TableLayout>
    </LinearLayout>
    </ScrollView>
    
    
    Das LinearLayout habe ich nur deswegen um die Tabelle, weil ich innerhalb des ScrollViews nur ein Element integrieren kann, aber über der Tabelle noch weitere Elemente einfügen will. Das ScrollView brauche ich, weil die Tabelle sehr lang werden wird.

    Also das klappt eigentlich ganz gut mit den Gitternetzlinien. Allerdings habe ich nun folgendes Problem, dass es nur für die "Auflösung" HVGA normal und WVGA large (Samsung Galaxy Tab) funktioniert. Bei allen anderen Auflösungen verhaut es mir die Spalten und Zellen.

    Man hat doch aber nur die Möglichkeit seperate Layout-XMLs für large, small und normal anzulegen (und land und portrait für die jeweilige Größe). Die meisten Auflösungen sind aber "normal" (glaube ich) und deshalb bringt mir die Aufteilung leider nix.

    Gibt es einen Trick wie ich die Tabelle dynamisch an die jeweilige Auflösung anpassen lasse?

    Wäre klasse wenn ihr mir da aushelfen könntet. :)

    Vielen Dank schon mal für eure Antworten.

    Liebe Grüße,
    pyretta
     
  2. pyretta, 19.04.2011 #2
    pyretta

    pyretta Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    95
    Erhaltene Danke:
    1
    Registriert seit:
    24.01.2011
    Ich glaube ich habe es selber gelöst mit einer "Quick&Dirty"-Lösung. (Wobei so "quick" ist die leider nicht....)

    Ich habe einfach fixe Spalten-, Zeilen-, und Tabellengrößen angegeben.
    Also habe ich hunderte LinearLayouts in der Tabelle, um die Inhalte dann auch in der Zelle bzw. Spalte zentrieren zu können. :mellow:

    Ist wahrscheinlich nicht die beste Lösung und sehr aufwendig, aber fürs erste scheint es zumindest einigermaßen zu klappen. Ich muss es dann eben nur für normal, small und large anpassen. Also 3 mal der ganze Spass. :bored:

    Falls ihr eine bessere Lösung wisst, ich bin offen für jegliche Vorschläge.

    Vielen Dank.
     
  3. pyretta, 26.04.2011 #3
    pyretta

    pyretta Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    95
    Erhaltene Danke:
    1
    Registriert seit:
    24.01.2011
    Nachtrag: Wenn man im Android Manifest folgendes einstellt, kann man sich die Adaptierung für alle Bildschirmgrößen sparen:

    Code:
    <supports-screens
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:resizeable="true"
    [B]android:anyDensity="false"[/B]
    />   
    
    Wichtig ist der Eintrag mit anyDensity ="false". Das brachte mir den gewünschten Erfolg. :smile:

    Allerdings weiss ich jetzt nicht, ob man mit absolut definierten "dip" Zahlen weiterhin arbeiten muss, ich mache es zur Sicherheit trotzdem.
     

Diese Seite empfehlen