2011-01-06 8 views
1

Ich versuche, ein Kartenspiel für Android zu schreiben, und ich renne in Layout-Schwierigkeiten. Ich kodiere den Hauptspielbildschirm, der aus fünf Karten besteht, die vertikal links und rechts angeordnet sind, und fünf Karten, die horizontal oben und unten angeordnet sind. Das Problem, das ich habe, ist, dass ich die Karten horizontal und vertikal verkleinern muss, wenn nicht alle anderen Karten angezeigt werden können.Wie erzwingen Android View, um Kinder zu schrumpfen

Unten ist ein Bild des Problems (Ich lasse die Karten links und unten aus Gründen der Klarheit weg). Wie Sie sehen können, werden nur vier Karten auf der rechten Seite angezeigt - die untere Karte ist teilweise verdeckt. Die Ansicht hat einfach keinen Platz mehr, so dass der Rest der Karte, die nicht passt, abgelegt wird.

Hier ist ein Link zu dem Screenshot, da ich keine Bilder veröffentlichen können: image

Was ich in dieser Situation möchte ist für Android, die Höhe aller Top-Karten und richtigen Karten, bis der Boden zu reduzieren Karte ist voll sichtbar. Es scheint nicht kompliziert, aber ich kann es nicht zur Arbeit bringen. Ich habe das Bild unten mit RelativeLayout erstellt und platziere alle obersten Karten nebeneinander und alle richtigen Karten untereinander (mit der obersten Karte rechts unter den obersten Karten). Ich habe versucht, alle Karten zu ihrem eigenen View hinzuzufügen, aber das hat auch nicht funktioniert.

Irgendwelche Vorschläge? Vielen Dank!


OK, ich habe es näher (siehe Bild Link unten), aber jetzt habe ich das entgegengesetzte Problem - ich brauche es zu erhöhen. Ich glaube, das liegt daran, dass ich die Bilder, die ich für die Anzüge verwende, verkleinert habe. Wie Sie sehen können, sind sie alle auf eine kleine Größe geschrumpft. Ich möchte in der Lage sein, das LinearLayout für jeden Schaltflächensatz horizontal/vertikal zu erweitern, um den gesamten freien Speicherplatz zu belegen, ohne die letzten Schaltflächen vom sichtbaren Teil des LinearLayouts zu entfernen. Idealerweise würde ich in der Lage sein, ein beliebiges Bild für den Anzug zu verwenden und die Größe entsprechend anzupassen, aber ich befürchte, dass ich etwas kreisförmige Logik oder etwas in der Layout-Engine benötige.

Hier ist meine XML-Datei. Die HandView-Klasse enthält die fünf Karten in jedem Satz. Die 5 Karten haben einen 5-Pixel-Abstand zwischen ihnen.

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:shrinkColumns="*" 
    android:background="#FF00FF00"> 

    <TableRow 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:background="#FF0000FF"> 
     <com.herscher.euchre.ui.HandView 
      android:background="#FFFF0000" 
      android:layout_column="1" 
      android:orientation="horizontal" 
      android:id="@+id/northHandView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center_horizontal" /> 
    </TableRow> 

    <TableRow 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content"> 
     <com.herscher.euchre.ui.HandView 
      android:layout_column="0" 
      android:orientation="vertical" 
      android:id="@+id/westHandView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

     <com.herscher.euchre.ui.PlayArea 
      android:layout_column="1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/playArea" /> 

     <com.herscher.euchre.ui.HandView 
      android:layout_column="2" 
      android:orientation="vertical" 
      android:id="@+id/eastHandView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </TableRow> 

    <TableRow 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content"> 
     <com.herscher.euchre.ui.HandView 
      android:layout_column="1" 
      android:orientation="horizontal" 
      android:id="@+id/southHandView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </TableRow> 

</TableLayout> 

New image is here

Hat jemand irgendwelche Vorschläge?

+0

Ich würde Rick Moranis fragen – jmichalicek

Antwort

0

Möglicherweise möchten Sie sich mit der Gewichtungsfunktion LinearLayout ansehen, wodurch die untergeordneten Ansichten auf den verfügbaren Platz vergrößert werden. In Ihrem Fall würden Sie wahrscheinlich alle dasselbe Gewicht haben wollen.

Verwandte Themen