Ich versuche herauszufinden, ob es möglich ist, beim Erstellen eines Layouts prozentuale Positionen / Größen zu verwenden. Was ich will ist so etwas ...
^
|
|
| 68%
|
|
v
Gallery (height equivalent of 16% total screen size)
^
| 16%
v
Ich teste auf einem Gerät, das im Querformat eine Anzeige von 800 x 480 tatsächlichen Pixeln hat, und erzwinge es derzeit mit den folgenden ...
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="80px"
android:layout_marginTop ="320px"
/>
</RelativeLayout>
Natürlich möchte ich keine festen px
Einheiten fest codieren , aber ich kann 68%
oder 0.68
für layout_marginTop
(zum Beispiel) nicht verwenden . Ich habe mir dp
Einheiten angesehen, bin mir aber nicht sicher, ob ich das auch so machen kann.
Ich muss zugeben, dass das UI-Design eine Schwachstelle von mir ist, daher wäre jeder Rat dankbar.
BEARBEITEN: Als zukünftige Referenz, wenn jemand nach einer ähnlichen Antwort sucht, habe ich nach Alan Moores Vorschlag die folgenden genau so, wie ich es will ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/bground"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.68"
android:background="@android:color/transparent"
/>
<Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.16"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.16"
android:background="@android:color/transparent"
/>
</LinearLayout>
Ich fand einige andere Beispiele für die Verwendung layout_weight
und entschied mich , die TextView
Höhen einzustellen 0dp
und auch Schwimmer für die Gewichte zu verwenden. Arbeitet großartig. :) :)
quelle
Verwenden Sie das PercentRelativeLayout oder PercentFrameLayout aus der Percent Supoort Library
<android.support.percent.PercentFrameLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" app:layout_heightPercent="68%"/> <Gallery android:id="@+id/gallery" android:layout_width="match_parent" app:layout_heightPercent="16%"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_width="match_parent"/> </android.support.percent.PercentFrameLayout>
quelle
Für TextView und seine Nachkommen (z. B. Button) können Sie die Anzeigegröße vom WindowManager abrufen und dann die TextView-Höhe auf einen Bruchteil davon einstellen:
Button btn = new Button (this); android.view.Display display = ((android.view.WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); btn.setHeight((int)(display.getHeight()*0.68));
quelle
Das obige Problem kann auch mithilfe von ConstraintLayout über Richtlinien gelöst werden .
Unten ist das Snippet.
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.constraint.Guideline android:id="@+id/upperGuideLine" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.68" /> <Gallery android:id="@+id/gallery" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toTopOf="@+id/lowerGuideLine" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/upperGuideLine" /> <android.support.constraint.Guideline android:id="@+id/lowerGuideLine" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.84" /> </android.support.constraint.ConstraintLayout>
quelle
Schau dir das an:
http://developer.android.com/reference/android/util/DisplayMetrics.html
Sie können die Höhe des Bildschirms ermitteln und es ist einfach zu berechnen, 68 Prozent des Bildschirms zu berechnen.
quelle