TableLayout mit Gitternetzlinien

P

pyretta

Ambitioniertes Mitglied
1
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
 
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.
 
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.
 

Ähnliche Themen

B
Antworten
4
Aufrufe
494
bb321
B
FabianDev
Antworten
5
Aufrufe
559
swa00
swa00
MES
Antworten
10
Aufrufe
820
MES
MES
Zurück
Oben Unten