घोषित रूप से आधी उपलब्ध स्क्रीन चौड़ाई को चौड़ाई असाइन करें


113

क्या उपलब्ध स्क्रीन चौड़ाई को आधा करने के लिए विजेट चौड़ाई असाइन करना संभव है, और क्या यह घोषणात्मक xml का उपयोग कर रहा है?

जवाबों:


274

यदि आपका विजेट एक बटन है:

<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>

मैं मान रहा हूं कि आप चाहते हैं कि आपका विजेट एक आधा ले जाए, और दूसरा विजेट दूसरा आधा लेने के लिए। ट्रिक LinearLayout का उपयोग कर रहा है, layout_width="fill_parent"दोनों विजेट्स पर सेटिंग layout_weightकर रहा है , और दोनों विजेट पर समान मान पर सेट कर रहा है। यदि दो विगेट्स हैं, तो दोनों एक ही वजन के साथ, लिनियरलैटआउट दो विजेट्स के बीच की चौड़ाई को विभाजित करेगा।


15
बेहतर उपयोग करें एंड्रॉइड: लेआउट_ एक्सपोज़र = "0dp" दोनों बाल तत्वों के लिए, उन्हें दो बार आकार देने से बचें।
टोमैश

2
मुझे कभी यह नहीं मिला कि आपको लेआउट_प्रकार = "0dp" क्यों घोषित करना था
एंड्रयू

आप एंड्रॉइड के बाद के संस्करणों में <स्पेस /> का उपयोग फिलर्स के रूप में भी कर सकते हैं। मुझे लगता है कि यदि आप इसे फिलर के रूप में उपयोग करने का इरादा रखते हैं, तो टेक्स्टव्यू की तुलना में व्यू थोड़ा हल्का है। लेआउट_ एक्सपोज़र = "0dp" वास्तव में Android प्रलेखन के अनुसार अनुशंसित दृष्टिकोण है।
मुज़

बहुत अच्छा काम करता है! बहुत बहुत धन्यवाद!!
IcyFlame

1
@ और: क्योंकि इस तरह लेआउट रेंडरर घटक के लेआउट_ उपलब्धता के साथ काम करने की कोशिश नहीं करता है, यह वजन के अनुसार अतिरिक्त चौड़ाई को साझा करने के लिए सीधे स्किप हो जाता है।
njzk2

43

बाधाओं के लेआउट का उपयोग करना

  1. एक दिशानिर्देश जोड़ें
  2. प्रतिशत को 50% पर सेट करें
  3. दिशानिर्देश और अभिभावक के लिए अपने दृष्टिकोण को विवश करें।

यहां छवि विवरण दर्ज करें

अगर आपको इसे प्रतिशत में बदलने में परेशानी हो रही है, तो यह उत्तर देखें ।

एक्सएमएल

<?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>

यह सबसे अच्छा जवाब होना चाहिए।
जीन एरिक

15

यह सुनिश्चित करने के लिए कि इसका आकार अपने वजन के अनुसार है, यह सुनिश्चित करने के लिए कि बच्चे के विचारों की सामग्री बड़ी हो गई है, तो भी वे 0dp के रूप में चौड़ाई देंगे, वे अभी भी ठीक आधे (वजन के अनुसार) तक सीमित रहेंगे

<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
मुझे लगता है कि एंड्रॉइड: लेआउट_ एक्सपोज़र = "0dp" सही है, लेकिन प्रत्येक वजन को 0.5 और weitghtSum को उनकी राशि पर सेट करना आवश्यक नहीं है। लगता है कि आप दोनों बच्चों के विचारों पर एक ही वजन होना चाहिए ..
jj_

5

केंद्र में एकल आइटम के लिए दूसरा तरीका, जो स्क्रीन का आधा भाग भरता है:

<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
हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है।
गन्र २१ gun१
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.