2015-08-13 12 views
9

Ich habe ein Layout, das ich in zwei Ansichten aufteilen möchte mit layout_weight (1: 2). Aber ich möchte, dass die linke Ansicht eine Breite von mindestens 400 dpi hat.Kombiniere layout_weight mit minWidth

Zum Beispiel, wenn die linke Ansicht bekommt 420dp Breite mit Gewicht dann lassen Sie es, aber wenn es weniger als 400dp, dann lassen Sie es 400dp sein und geben Sie die andere Ansicht den ganzen Rest.

Dies ist das Layout, das ich versucht habe und nicht für mich funktioniert hat.

<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:minWidth="400dp" 
      android:background="@android:color/holo_blue_bright"/> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="2" 
      android:background="@android:color/holo_green_light"/> 

    </LinearLayout> 

Bitte helfen, Vielen Dank!

+0

Soweit ich sehen kann, müssten Sie dies programmgesteuert tun. Aber zuvor würde ich vorschlagen, dass Sie Ihre Benutzeroberfläche neu überdenken. Was Sie versuchen zu tun scheint ein wenig überflüssig. – JanithaR

Antwort

-1
Try this: 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:weightSum="3" > 

    <View 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:background="@android:color/holo_blue_bright" 
     android:minWidth="400dp" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="2" 
     android:background="@android:color/holo_green_light" /> 

</LinearLayout> 
+0

Es hat es nicht gelöst. Wie sollte GewichtSumme es lösen? – Yaniv

+0

Ersetze deinen Android: layout_width = "match_parent" mit android: layout_width = "wrap_content" von LinearLayout .. –

+0

Hat es nicht geholfen, danke – Yaniv

0

Ich denke, das ist das, was Sie brauchen:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

    <View 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:minWidth="400dp" 
     android:background="@android:color/holo_blue_bright"/> 

    <View 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="match_parent" 
     android:background="@android:color/holo_green_light"/> 

</LinearLayout> 

Grundsätzlich lassen das erste Layout der benötigten Platz in Anspruch nehmen, aber nicht weniger als 400dp. Der zweite wird alles übrige übernehmen. Wie in allen Fällen, in denen weight beteiligt ist, stellen Sie sicher, dass der benötigte Platz (für die Breite) für die 2 Kinder weniger ist als das, was die Eltern anbieten können, sonst haben Sie Dinge außerhalb des Bildschirms.

Hinweis: Ich habe versucht, es am Telefon Layout, aber 400dp off-Bildschirm in Porträt war, so dass es wie das erste Layout schien war den ganzen Raum nehmen, so stellen Sie sicher, es mit mehr als 400dp auf einem Gerät zu versuchen, in die Richtung, die Sie Ihre Layout-Spannweite wünschen :-)

+0

Entschuldigung, dass ich das nicht in der Frage geschrieben habe, aber die linke Ansicht ist eine dynamische Layout, das eine Größe von seinem Elternteil bekommen sollte. Danke trotzdem! – Yaniv

+0

Es ändert nichts. Die Idee ist, kein Gewicht darauf zu haben. Es spielt keine Rolle, ob Sie tatsächlich eine Breite durch 'LayoutParams' setzen und nicht auf' wrap_content' setzen. Vielleicht müssen Sie Ihre 'View' Tags durch' LinearLayouts' ersetzen und die 'Views' darin platzieren. –

Verwandte Themen