Android Uygulamamdaki bir Login Activity
için bir form düzeni üzerinde çalışıyorum. Aşağıdaki resim nasıl görünmesini istediğimi gösteriyor:
Bu düzeni aşağıdaki XML ile elde edebildim. Sorun şu ki, bu biraz hileli. Ana EditText için bir genişlik kodlamak zorunda kaldım. Özellikle şunu belirtmem gerekiyordu:
android:layout_width="172dp"
Ana bilgisayar ve bağlantı noktası EditText'lerine yüzdelik bir genişlik vermek istiyorum. (Ana bilgisayar için %80, bağlantı noktası için %20 gibi bir şey.) Bu mümkün mü? Aşağıdaki XML benim Droid'imde çalışıyor, ancak tüm ekranlarda çalışmıyor gibi görünüyor. Gerçekten daha sağlam bir çözüm istiyorum.
<!-- begin snippet: js hide: false -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/host_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/home"
android:paddingLeft="15dp"
android:paddingTop="0dp"
android:text="host"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<TextView
android:id="@+id/port_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/home"
android:layout_toRightOf="@+id/host_input"
android:paddingTop="0dp"
android:text="port"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<EditText
android:id="@+id/host_input"
android:layout_width="172dp"
android:layout_height="wrap_content"
android:layout_below="@id/host_label"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="4dp"
android:background="@android:drawable/editbox_background"
android:inputType="textEmailAddress" />
<EditText
android:id="@+id/port_input"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_below="@id/host_label"
android:layout_marginTop="4dp"
android:layout_toRightOf="@id/host_input"
android:background="@android:drawable/editbox_background"
android:inputType="number" />
<TextView
android:id="@+id/username_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/host_input"
android:paddingLeft="15dp"
android:paddingTop="15dp"
android:text="username"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<EditText
android:id="@+id/username_input"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/username_label"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="4dp"
android:background="@android:drawable/editbox_background"
android:inputType="textEmailAddress" />
<TextView
android:id="@+id/password_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/username_input"
android:paddingLeft="15dp"
android:paddingTop="15dp"
android:text="password"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<EditText
android:id="@+id/password_input"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/password_label"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="4dp"
android:background="@android:drawable/editbox_background"
android:inputType="textPassword" />
<ImageView
android:id="@+id/home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="false"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="15dp"
android:scaleType="fitStart"
android:src="@drawable/home" />
<Button
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/password_input"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:text=" login "
android:textSize="18sp" >
</Button>
</RelativeLayout>
<!-- end snippet -->
Siz android:layout_weight
niteliğini arıyorsunuz. Bu, düzeninizi tanımlamak için yüzdeleri kullanmanızı sağlayacaktır.
Aşağıdaki örnekte, sol düğme alanın %70'ini, sağ düğme ise %30'unu kullanmaktadır.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="left"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".70" />
<Button
android:text="right"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".30" />
</LinearLayout>
Her türlü Görünüm ile aynı şekilde çalışır, düğmeleri ihtiyaçlarınıza uyacak şekilde bazı EditText ile değiştirebilirsiniz.
Layout_widthdeğerini
0dp` olarak ayarladığınızdan emin olun, aksi takdirde görünümleriniz düzgün ölçeklenmeyebilir.
Ağırlık toplamının 1'e eşit olması gerekmediğini unutmayın, ben sadece bu şekilde okumayı daha kolay buluyorum. İlk ağırlığı 7'ye ve ikincisini 3'e ayarlayabilirsiniz ve aynı sonucu verecektir.
Bunu düzen ağırlıkları ile gerçekleştirebilirsiniz. Bir ağırlık, ekranın sahipsiz kısımlarının nasıl bölüneceğini belirler. Her EditText'e 0'lık bir layout_width ve orantılı bir ağırlık verin. Örneğin, ilkinin iki kat daha fazla yer kaplamasını istiyorsanız birine 2, diğerine 1 ağırlık verin.