Eu gostaria de ter o seguinte resultado. Estou dando o meu código e uma imagem que mostra como ele atualmente parece. Eu estou usando MVVMCross com Xamarin Nativ UI para o Android.
Saída necessária A vista superior deve tomar 70% do espaço ea seguir deve tomar 30% do espaço disponível.
A disposição de corrente é utilizado em um fragmento. Portanto, este layout é adicionado como um filho a um a FrameLayout na atividade, que hospeda este fragmento.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|bottom"
android:layout_weight=".7">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="Some Text"
android:gravity="top" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Add Entry"
local:MvxBind="Click AddCommand" />
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight=".3">
<ImageView
android:src="@drawable/waves"
android:adjustViewBounds="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/MilliliterViewContainer"/> <!-- The ml is a custom view which is being inflated and added in this layout from the code behind -->
</FrameLayout>
</LinearLayout>
Aqui está a saída de corrente, que de alguma forma aplicado o peso sobre a criança, que é ImageView.
Corrente de saída Eu não entendo por que não está sendo mostrado a imagem na largura total? porque o peso é aplicado à largura vista de imagem? As ondas são uma imagem de vector.
O tipo de escala padrão em um ImageView
no Android é fitCenter
, o que parece dizer a Vector Drawable para apenas uma espécie de se ajustar à altura no centro.
Se você alternar para fitXY
ele irá preencher a largura.
Sugiro também que você re-trabalho seu layout a ser usado ConstraintLayout
em vez de evitar o uso de pesos caros no LinearLayout
. Isso poderia ser algo como:
<?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"
tools:showIn="@layout/activity_main">
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.7" />
<ImageView
android:id="@+id/waves_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:src="@drawable/waves"
android:scaleType="fitXY"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/guideline" />
<Button
android:id="@+id/add"
android:text="Add Entry"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintWidth_percent="0.6"
app:layout_constraintBottom_toTopOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/overview"
android:text="Overview Text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintWidth_percent="0.6"
app:layout_constraintBottom_toTopOf="@+id/add"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</android.support.constraint.ConstraintLayout>
Isso achata o layout de forma significativa, o que significa que os cálculos menos overdraw e menos feito para calcular o layout.