Açıkça kullanılabilir yarım ekran genişliğine genişlik atayın


113

Mevcut ekran genişliğinin yarısına bir pencere öğesi genişliği atamak ve bunu bildirime dayalı xml kullanarak yapmak mümkün müdür?

Yanıtlar:


274

Widget'ınız bir Düğme ise:

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:weightSum="2"
    android:orientation="horizontal">
    <Button android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="somebutton"/>

    <TextView android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
</LinearLayout>

Widget'ınızın bir yarısını kaplamasını ve diğer yarısını başka bir parçacığın kaplamasını istediğinizi varsayıyorum. İşin püf noktası, bir LinearLayout kullanmak layout_width="fill_parent", her iki widget'ta ayarlama yapmak ve her iki widget'ta layout_weightda aynı değeri ayarlamaktır . Her ikisi de aynı ağırlığa sahip iki widget varsa, LinearLayout genişliği iki widget arasında böler.


15
Her iki alt öğe için de android: layout_width = "0dp" kullanmak, iki kez boyutlandırmaktan kaçınmaktır.
tomash

2
Neden layout_width = "0dp" ifadesini ilan etmeniz gerektiğini asla anlamadım
Andrew

Ayrıca Android'in sonraki sürümlerinde dolgu olarak <Boşluk /> kullanabilirsiniz. Bir dolgu olarak kullanmayı düşünüyorsanız, View'un TextView'dan biraz daha hafif olduğunu düşünüyorum. layout_width = "0dp" aslında Android belgelerine göre önerilen yaklaşımdır.
Muz

Harika çalışıyor! Çok teşekkür ederim!!
IcyFlame

1
@Andrew: Bu şekilde düzen oluşturucu bileşenin layout_width'i ile çalışmaya çalışmadığı için, ağırlıklara göre fazladan genişliği paylaşmaya doğrudan atlar.
njzk2

43

Kısıtlama düzenini kullanma

  1. Bir Kılavuz Ekleyin
  2. Yüzdeyi% 50 olarak ayarlayın
  3. Bakış açınızı Kılavuz ve üst öğe ile sınırlandırın.

görüntü açıklamasını buraya girin

Yüzde olarak değiştirmekte sorun yaşıyorsanız, bu yanıta bakın .

XML

<?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:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="81dp">

    <android.support.constraint.Guideline
        android:id="@+id/guideline8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.5"/>

    <TextView
        android:id="@+id/textView6"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="TextView"
        app:layout_constraintBottom_toTopOf="@+id/guideline8"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
    
</android.support.constraint.ConstraintLayout>

En iyi cevap bu olmalı.
Jean Eric

15

boyutunun tam olarak ağırlığına göre olduğundan emin olmak için genişliği 0dp olarak verin; bu, çocuk görüntülemelerinin içeriği daha büyük olsa bile, tam olarak yarı yarıya sınırlı kalmasını sağlar (ağırlığa göre)

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

    <Button
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="click me"
    android:layout_weight="0.5"/>


    <TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="Hello World"
    android:layout_weight="0.5"/>
  </LinearLayout>

1
Android: layout_width = "0dp" nin doğru olduğunu düşünüyorum, ancak her bir ağırlığı 0.5 ve weitghtSum'u toplamlarına ayarlamak gerekli değil. Görünüşe göre her iki çocuk
görüşünde

5

Ortadaki, ekranın yarısını dolduran tek bir öğe için başka bir yol:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:visibility="invisible" />

        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2" />

       <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:visibility="invisible" />

</LinearLayout>

1
<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
    android:id="@+id/textD_Author"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:text="Author : "
    android:textColor="#0404B4"
    android:textSize="20sp" />
 <TextView
    android:id="@+id/textD_Tag"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:text="Edition : "
    android:textColor="#0404B4"
    android:textSize="20sp" />
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:weightSum="1" >
    <Button
        android:id="@+id/btbEdit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="Edit" />
    <Button
        android:id="@+id/btnDelete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="Delete" />
</LinearLayout>
</LinearLayout>

3
Bu kod parçacığı soruyu çözebilirken, bir açıklama eklemek, yayınınızın kalitesini artırmaya gerçekten yardımcı olur. Gelecekte okuyucular için soruyu yanıtladığınızı ve bu kişilerin kod önerinizin nedenlerini bilmeyebileceklerini unutmayın.
gunr2171
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.