কনস্ট্রেন্টলয়েটে সীমাবদ্ধতার সাথে প্রস্থ নির্ধারণ করুন


98

আমি কোনও ভিউর বাম এবং ডান দিকটিকে তার পিতামাতার দৃশ্যের মার্জিনগুলিতে সীমাবদ্ধ করতে এবং বরাদ্দকৃত স্থানটি পূরণ করতে চাই। তবে, প্রস্থকে উভয়তে নির্ধারণ করা match_parentবা wrap_contentএকই ফলাফলটি উপস্থিত হতে দেখা যায়।

ম্যাচ_কন্ট্রেন্টসের সমতুল্য কিছু আছে (ম্যাচ_পিতা এবং পিতা / মোড়কের বিপরীতে)? কি match_parentএবং wrap_contentবিন্যাস প্রভাব ফেলবে না অথবা তারা নতুন বাধ্যতা লেআউট উপেক্ষা করা হয়?

আমার প্রিয় প্ল্যাটফর্মের জন্য এই নতুন লেআউট সিস্টেমটি ভালবাসা!


4
match_parentআপনার জন্য কাজ করে না কেন ?
ইউজেন মার্টিনভ

উত্তর:


126

match_parentসমর্থিত নয়. এর সাথে 0dp, আপনি নিজের বাধাগুলি 'স্কেল্যাবল' হিসাবে ভাবতে পারেন 'কী রেখেছেন তা পূরণ করার' চেয়ে।

এছাড়াও, 0dpএমন অবস্থান দ্বারা সংজ্ঞায়িত করা যায়, যেখানে match_parentএটির অবস্থানের জন্য এটি তার পিতামাতার উপর নির্ভর করে (x, y এবং প্রস্থ, উচ্চতা)


31
কেন এই গৃহীত উত্তর?!? ম্যাচ_প্যারেন্ট্ট সীমাবদ্ধ বিন্যাস দ্বারা সমর্থিত নয়। এবং এই উত্তর এটি কার্যকর করার কোন উপায় দেয় না।
ড্যানিয়েলে সেগাটো

4
ম্যাচ_পিতা সমর্থিত নয়।
নিকোলাস রোয়ার্ড 23 '11

7
এই উত্তরটি সঠিক। এটি পরিষ্কারভাবে জানিয়েছে যে ম্যাচ_পিতা সমর্থনযোগ্য নয়। এছাড়াও, 'ম্যাচ_প্যারেন্ট' সেটিংয়ের যুক্তিসঙ্গত বিকল্প সম্পাদন করতে, বাম এবং ডানদিকে পিতামাতার কাছে নির্ধারিত প্রতিবন্ধকতা সহ 0 ডিপি (মার্জিন 0 বা অনুসারে বাছাই করা) একই ফল দেবে। এই জবাবটিতে সত্যই যে জিনিসটি বাকি ছিল যা হ'ল যা আরিয়কের উত্তরে রয়েছে তা হ'ল উভয় পক্ষের (বা উলম্বের জন্য উপরে এবং নীচে) সীমাবদ্ধতা স্থাপন করা। এইভাবে আমি এটি করি এবং আমার কোনও সমস্যা হয়নি। এছাড়াও অন্যান্য উপাদানগুলির সাথে ব্যবহার করার সময় এটি ওজন নির্ধারণ হিসাবে কাজ করে।
এরিক এঙ্গেল

কেউ যদি এখানে এসে কাজ করে এটির জন্য উত্তর চাইতে থাকে। মনে হচ্ছে এটি বিটাতে ভেঙে গেছে। এটি 1.0.2 তে কাজ করে বলে মনে হচ্ছে। পাঠ শিখেছি - পাঠাগারগুলিকে হিমায়িত করুন, সুবিধাবাদী আপডেটগুলি ব্যবহার করবেন না।
মার্চকে অস্তিত্বশীল

4
@ শাকিলাম্যান মন্তব্যের উত্তর হতে পারে। তিনি যথাযথভাবে এটি বাস্তবায়নের পথ নির্দেশ করেছেন। উভয় পক্ষের 0dp মার্জিন সহ একটি সীমাবদ্ধতা তৈরি করুন, এটি কৌশলটি করে।
উত্কর্ষ মানকাদ

170

match_parentঅনুমোদিত নয়। তবে আপনি প্রকৃতপক্ষে প্রস্থ এবং উচ্চতা 0 ডিপি সেট করতে পারেন এবং উপরের এবং নীচে বা বাম এবং ডান সীমাবদ্ধতাকে "প্যারেন্ট" তে সেট করতে পারেন।

সুতরাং উদাহরণস্বরূপ, যদি আপনি match_parentউপাদানটির প্রস্থে সীমাবদ্ধতা রাখতে চান , আপনি এটি এটি করতে পারেন:

<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"/>

4
অ্যান্ড্রয়েড দলের উচিত "ম্যাচ প্যারেন্ট" কাজ করা। এটি অত্যন্ত সহজ হবে। কেবল ম্যাচ_প্যারেন্টকে একই কার্যকারিতা সরবরাহ করুন যেমন অ্যাপ্লিকেশনটি পিতামাতার শুরু এবং শেষ করতে সীমাবদ্ধ ছিল। উল্লম্ব বা অনুভূমিকভাবে সনাক্ত করা সহজ হবে।
bharv14

কিন্তু 0 ডিপি এর ফলে ডাবল-মাপের ফল হয় না?
প্রমোদ গার্গ

25

স্পষ্টত match_parent:

  • সরাসরি নীচের দর্শনগুলির জন্য ঠিক নেইConstraintLayout
  • সরাসরি নীচে থাকা দৃশ্যের অভ্যন্তরীণ মতামতের জন্য ঠিক আছেConstraintLayout

সুতরাং যদি আপনার মতামতগুলির হিসাবে এটির কাজ করতে হয় match_parentতবে:

  1. সরাসরি শিশুদের এর ConstraintLayoutব্যবহার করা উচিত0dp
  2. নেস্টেড উপাদানগুলি (উদাহরণস্বরূপ, কনস্ট্র্যান্টলাইআউট থেকে নাতি-নাতি) ব্যবহার করতে পারেmatch_parent

উদাহরণ:

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="16dp">

    <android.support.design.widget.TextInputLayout
        android:id="@+id/phoneNumberInputLayout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/phoneNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </android.support.design.widget.TextInputLayout>

কনস্ট্রেন্টলআউট সম্পর্কে কীভাবে কনস্ট্রেন্টলয়েট বাসা বেঁধেছে, আপনার উদাহরণে টেক্সটইনপুটলয়েটকে কনস্ট্রেন্টলয়েটে পরিবর্তন করবেন?
সুপার-ইউজার

16

match_parentদ্বারা সমর্থিত নয় ConstraintLayout0dpসীমাবদ্ধতার সাথে মেলে দিতে প্রস্থটি সেট করুন ।


এবং মোড়ক_সামগ্রী সমর্থিত?
কেজি

হ্যাঁ, আমি যতদূর বলতে পারি।
মার্সিন কোজিস্কি

6
wrap_content সমর্থিত
রোমেন গাই

13

থেকে সরকারী ডক :

গুরুত্বপূর্ণ: কনস্ট্রেন্টলয়েটে থাকা উইজেটগুলির জন্য MATCH_PARENT এর প্রস্তাব দেওয়া হয় না। অনুরূপ আচরণ MATCH_CONSTRAINT ব্যবহার করে সংশ্লিষ্ট বাম / ডান বা উপরের / নীচের সীমাবদ্ধতাগুলি "পিতামাতার" হিসাবে সেট করে সংজ্ঞায়িত করা যেতে পারে।

সুতরাং আপনি যদি MATCH_PARENTপ্রভাব অর্জন করতে চান তবে আপনি এটি করতে পারেন:

<TextView
    android:id="@+id/textView"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="TextView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

4

আপনি আপনার অ্যাডাপ্টার পরীক্ষা করতে পারেন।

 1 - MyLayoutBinding binding = MyLayoutBinding.inflate(layoutInflater);
 2 - MyLayoutBinding binding = MyLayoutBinding.inflate(layoutInflater, viewGroup, false);

আমি যখন 1 ব্যবহার করছিলাম তখন আপনার মত একই সমস্যা ছিল You আপনি 2 টি চেষ্টা করতে পারেন।


এই তো সোনার! ধন্যবাদ!
গ্রিগোর

3

আপনার দৃষ্টিভঙ্গিটিকে পিতা-মাতার হিসাবে তৈরি করার জন্য সরাসরি সম্ভব নয়, তবে আমরা এটি কিছুটা ভিন্ন উপায়ে করতে পারি, তবে আরটিএল সমর্থনটি ব্যবহার করে স্টার্ট এবং এন্ড, কোজ সহ বাম এবং ডান বৈশিষ্ট্যটি ব্যবহার করতে ভুলবেন না তবে এটির প্রয়োজন হবে।

    <Button
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>

2

প্রস্থ বা উচ্চতা নির্ধারণ করুন (আপনার পিতামাতার সাথে কী মিলতে হবে) 0 ডিপিতে এবং ম্যাচ প্যারেন্ট হিসাবে কাজ করতে বাম, ডান, উপরে, নীচে মার্জিন সেট করুন


1

অফিস ডকটিতে: https://developer.android.com/references/android/support/constraint/CrastraintLayout

যখন একটি মাত্রা MATCH_CONSTRAINT এ সেট করা থাকে, ফলস্বরূপ আকারটি সমস্ত উপলভ্য স্থান গ্রহণ করায় ডিফল্ট আচরণ হয়।

0dp ব্যবহার করে, যা "MATCH_CONSTRAINT" এর সমতুল্য

গুরুত্বপূর্ণ: কনস্ট্রেন্টলয়েটে থাকা উইজেটগুলির জন্য MATCH_PARENT এর প্রস্তাব দেওয়া হয় না। অনুরূপ আচরণ MATCH_CONSTRAINT ব্যবহার করে সংশ্লিষ্ট বাম / ডান বা উপরের / নীচের সীমাবদ্ধতাগুলি "পিতামাতাকে" সেট করে সংজ্ঞায়িত করা যেতে পারে


0

আপনি যদি পিতামাতার কেন্দ্রে টেক্সটভিউ চান ..
আপনার প্রধান বিন্যাসটি কনস্ট্রেন্ট লেআউট

<androidx.appcompat.widget.AppCompatTextView
     android:layout_width="0dp"
     android:layout_height="wrap_content"
     android:text="@string/logout"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     android:gravity="center">
</androidx.appcompat.widget.AppCompatTextView>

0

আমি আরও একটি উত্তর পেয়েছি যখন স্ক্রোল ভিউয়ের ভিতরে বাধা লেআউট থাকে তখন আমাদের রাখা দরকার

android:fillViewport="true"

স্ক্রোল ভিউতে

এবং

android:layout_height="0dp"

সীমাবদ্ধ বিন্যাসে

উদাহরণ:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

    <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="0dp">

// Rest of the views

</androidx.constraintlayout.widget.ConstraintLayout>

</ScrollView>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.