1

Ich verwende PercentRelativeLayout von Design Support Library und ich möchte verschiedene Prozent für 7 Zoll und 10 Zoll Tablet einstellen.Wie wird die prozentuale Dynamik in PercentRelativeLayout erstellt?

Zum Beispiel, wenn ich ImageView wie unten habe.

<ImageView 
    android:id="@+id/contactDoc" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:layout_widthPercent="70%" 
    app:layout_heightPercent="70%" 
    android:layout_centerHorizontal="true" 
    android:clickable="true" 
    android:src="@drawable/dashboard_contactdoctor" /> 

jetzt, wenn ich will, ohne dass verschiedene Layout-Ordner wie sw720dp 70% für 7-Zoll-Tablette und 60% für 10-Zoll-Tablette einzustellen. Kann ich es schaffen? Hilfe wird geschätzt.

+0

In der Theorie könnten Sie eine Wert-Ressource verwenden. Ich bin nicht sicher, was der Datentyp dieses Prozentsatzes ist, obwohl ich mich nicht erinnere, dass es einen "float" Ressourcentyp gibt. – CommonsWare

+0

Wie wäre es mit einem anderen Layout, nur mit einem anderen Stil? – poss

+0

ja eigentlich auf traditionelle Weise können wir dimension über dimens.xml für verschiedene Bildschirmgröße verwenden, aber für Prozent können wir nicht .. – Pranav

Antwort

1

Diese Prozentsätze sind fraction Ressourcen. Sie sollten in der Lage sein, res/values/fractions.xml und res/values-sw720dp/fractions.xml einzurichten, wo Sie define the values for the fractions. Verwenden Sie dann @fraction/whatever_you_called_it im Layout.

+0

Danke das ist, was ich suche, ohne Last auf Laufzeit Wert oder andere Ordner zu nehmen .. – Pranav

0

Sie können verschiedene Layouts für verschiedene Bildschirmgrößen verwenden. Sie können weitere Informationen in der Dokumentation lesen: https://developer.android.com/training/multiscreen/screensizes.html

Eine Möglichkeit, mehrere Layouts wihtout Bereitstellung der ImageView in einem LinearLayout mit einem android:weightSum von 10 und legen Sie dann das Gewicht des ImageView programmatisch zu platzieren wäre:

LinearLayout.LayoutParams layoutParams = yourView.getLayoutParams(); 
layoutParams.weight = WHATEVER; 
yourView.setLayoutParams(layoutParams); 
+1

Die Frage besagt ausdrücklich "ohne einen anderen Layoutordner zu erstellen". – CommonsWare

+0

Entschuldigung- Ich bearbeitete meine Antwort – Katharina

0

Versuchen Sie mit constraint layout, ist es auf Android Studio 2.2 und nach.

Durch diese verwenden, können Sie sowohl vertikale als auch horizontale Richtlinie hinzufügen, je nach Bildschirm Prozentsatz und legen Sie die Höhe und Breite der Imageview in Bezug auf jene Richtlinie

+0

nach Bildschirm Prozent ist es in Ordnung, aber wieder dieselbe Frage können wir verschiedene Prozent für unterschiedliche Auflösung einstellen, ohne verschiedene Layouts ..? – Pranav

0

Zunächst müssen Sie 7 "oder 10" Tablet zu erkennen. Ich nehme an, dass Sie bereits wissen, wie Sie es basierend auf Ihrer Frage tun. Wenn nicht, überprüfen Sie this great answer.

Nachdem Sie wissen, was Gerät mit Ihnen zu tun, verwenden Sie den folgenden Code innerhalb einer if Zustand zu versetzen (oder woanders), um den Prozentsatz Ihrer Ansicht in Code zu definieren:

View view = findViewById(R.id.yourView); 
    PercentLayoutHelper.PercentLayoutParams params = 
      (PercentRelativeLayout.LayoutParams) view.getLayoutParams(); 
    PercentLayoutHelper.PercentLayoutInfo info = params.getPercentLayoutInfo(); 
    info.heightPercent = 0.60f; 
    view.requestLayout(); 

Basierend auf another great answer.

Verwandte Themen