2010-05-25 13 views
10

Ich habe ein Image an der Spitze meiner Anzeige, die wie folgt aussieht:Wie kann ich eine dynamische Höhe für ein ImageView angeben?

╔══════════════════════════════════════════════╗ 
║ ImageView ╔══════════════╗    ║ 
║    ║    ║    ║ 
║    ║ Actual image ║    ║ 
║    ║    ║    ║ 
║    ║    ║    ║ 
║    ║    ║    ║ 
║    ╚══════════════╝    ║ 
╚══════════════════════════════════════════════╝ 

Darunter habe ich eine Reihe von Schaltflächen und Textviews ..

ich die Imagehöhe dynamisch möchten erhöhen Sie abhängig von der maximalen Höhe des Bildschirms. Ich richte das Layout mit den Schaltflächen am unteren Rand des Bildschirms aus, und ich möchte, dass der Rest des Bildschirms von der obigen ImageView aufgenommen wird.

Da die ImageView ein zentriertes Bild enthält, würde ich auch die Mindesthöhe und eine Bildlaufleiste einstellen, wenn der Bildschirm zu klein ist, um die Bildansicht und die darunter liegenden Schaltflächen anzuzeigen.

Danke!

Ist das möglich?

+13

+1 für ascii Visualisierung awesomeness. – womp

Antwort

5

Der erste Teil sollte ziemlich einfach sein, wenn Sie android:layout_width verwenden. Wenn Sie die layout_width nur für das ImageView (oder seinen Container) festlegen, wird es erweitert, um so viel wie möglich vom übergeordneten Layout zu übernehmen. wenn Sie ein Layout, in dem ein Image nahm den gesamten Rest des Bildschirms wollen, würde man dies zum Beispiel tun:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ImageView android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:src="@drawable/icon" 
     android:scaleType="fitCenter" android:layout_weight="1" /> 
    <LinearLayout android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <!-- Put whatever you want in here --> 
    </LinearLayout> 
</LinearLayout> 

In diesem Beispiel ich Strecke das Bild den gesamten Bildschirm aufzunehmen, aber Sie präsentieren auch das Problem "Was ist, wenn das Bild zu groß für den Bildschirm ist und ich scrollen muss?" In diesem Fall müssen Sie lediglich eine ScrollView zum Layout hinzufügen. Wenn das Bild zu groß vertikal ist, wird der Bildschirm automatisch blättern:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:fillViewport="true"> 
    <LinearLayout android:orientation="vertical" 
     android:layout_width="fill_parent" android:layout_height="fill_parent"> 
     <ImageView android:layout_width="fill_parent" 
      android:layout_height="wrap_content" android:src="@drawable/huge" 
      android:scaleType="fitCenter" android:layout_weight="1" /> 
     <LinearLayout android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
      <!-- Insert your content here --> 
     </LinearLayout> 
    </LinearLayout> 
</ScrollView> 

Eine wichtige Sache zu beachten: Wenn Sie nicht android:fillViewport auf true eingestellt haben ImageViews auf der Scrollview, die zu klein sind, werden nicht füllen der gesamte Bildschirm.

0

völlig nicht die Antwort, die Sie suchen, aber es ist definitiv möglich durch eine Mischung aus relativer Layout Scrollview und dynamische Codierung durch Ihre Klasse. im Moment nicht in der Nähe eines Programmiercomputers, aber die vage Antwort ist "möglich? ja!" :)

Verwandte Themen