কনস্ট্রেন্টলয়েট এর ভিতরে মোড়ানো_ কনটেন্ট ভিউ স্ক্রিনের বাইরে প্রসারিত


132

আমি একটি ব্যবহার করে একটি সাধারণ চ্যাট বুদ্বুদ বাস্তবায়নের চেষ্টা করছি ConstraintLayout। এটিই আমি অর্জন করার চেষ্টা করছি:

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

তবে wrap_contentমনে হচ্ছে সীমাবদ্ধতার সাথে সঠিকভাবে কাজ করবে না। এটি মার্জিনকে সম্মান করে তবে উপলভ্য স্থানটি সঠিকভাবে গণনা করে না। আমার লেআউটটি এখানে:

<?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="wrap_content">

    <TextView
        android:id="@+id/chat_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintHorizontal_bias="0"
        tools:background="@drawable/chat_message_bubble"
        tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sodales accumsan tortor at bibendum."
        android:layout_marginStart="64dp"
        android:layout_marginLeft="64dp"
        android:layout_marginEnd="32dp"
        android:layout_marginRight="32dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp" />
</android.support.constraint.ConstraintLayout>

এই রেন্ডারগুলি নিম্নরূপ:

এখানে চিত্র বর্ণনা লিখুন

আমি ব্যবহার করছি com.android.support.constraint:constraint-layout:1.0.0-beta4

আমি কি ভুল কিছু করছি? এটি কোনও বাগ বা কেবল একটি অনিচ্ছুক আচরণ? আমি কী ব্যবহার করে সঠিক আচরণ অর্জন করতে পারি ConstraintLayout(আমি জানি যে আমি অন্যান্য লেআউটগুলি ব্যবহার করতে পারি, আমি ConstrainLayoutবিশেষত জিজ্ঞাসা করছি ))


আপনি কি তার মূল সীমাবদ্ধ বিন্যাসের সাথে পাঠ্য দর্শনটি পোস্ট করতে পারেন? যেমনটি আপনি জানেন, পিতামাতার বিন্যাসের বৈশিষ্ট্যগুলি সন্তানের উপর দুর্দান্ত প্রভাব ফেলে
মোহাম্মদ আতিফ

যাইহোক, আপনার ক্ষেত্রে আমি অনুমান করি অনুভূমিক পক্ষপাতিত্বই অপরাধী। লেআউট রাইট থেকে ডান এবং পক্ষপাতদুষ্ট সরানোর চেষ্টা করুন
মোহাম্মদ আতিফ

1
অনুভূমিক পক্ষপাত প্রয়োজনীয়, অন্যথায় যদি বুদ্বুদ কেন্দ্রিক হয়। বিন্যাসের ডান থেকে ডানদিকে সঠিক মার্জিন আমলে নেওয়া হবে না, যা আমরা চাই না। আপনার পরামর্শ অনুসারে আমি সেগুলি সরিয়ে দেওয়ার চেষ্টা করেছি, তবে তাতে কোনও লাভ হয়নি।
মার্সিন জেদিনাক

1
সমস্যাটি অবশ্যই অনুভূমিক পক্ষপাত 0 আমি সম্ভাব্য সমাধানগুলি যাচাই করব এবং এটিকে ততক্ষণ পোস্ট করব কারণ আমিও বাধা লেআউটে অনুরূপ কিছু নিয়ে কাজ করছি।
মোহাম্মদ আতিফ

1
@nmu চ্যাট বুদ্বুদ আসে tools:background="@drawable/chat_message_bubble"। এটি বাস্তবায়নের জন্য আপনাকে আঁকাযোগ্য ফোল্ডারে চ্যাট_মেসেজ_ববল.এক্সএমএল ফাইল তৈরি করতে হবে তারপরে এই কোডটি যুক্ত করুন: <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FB4382"/> <corners android:radius="10dip"/> </shape>
ইউজিন ব্রুসভ

উত্তর:


242

পুরানো: আরও ভাল উত্তর দেখুন

না, আপনি কনস্ট্রেন্টলআউটটির সাথে যা চান তা আজকের মতো করতে পারবেন না (1.0 বিটা 4):

  • wrap_content কেবলমাত্র উইজেটকে নিজের পরিমাপ করতে বলেছে, তবে শেষের সীমাবদ্ধতার বিরুদ্ধে এর প্রসারণ সীমাবদ্ধ করবে না
  • match_constraints(0dp) হবে সীমাবদ্ধতার বিরুদ্ধে উইজেট আকার সীমিত ... কিন্তু এমনকি যদি তাদের ম্যাচ হবে wrap_contentছোট হয়ে যেত (আপনার প্রথম উদাহরণ), যা কি না আপনি হয় চাই।

এখনই আপনি এই বিশেষ ক্ষেত্রে ভাগ্যের বাইরে: - /

এখন ... আমরা match_constraintsএই সঠিক দৃশ্যের মোকাবেলায় অতিরিক্ত ক্ষমতা যুক্ত করার কথা ভাবছি ( wrap_contentআকারটি সীমাবদ্ধতার চেয়ে বেশি না হওয়া পর্যন্ত আচরণ করা )।

আমি প্রতিশ্রুতি দিতে পারি না যে এই নতুন বৈশিষ্ট্যটি 1.0 প্রকাশের আগে এটি তৈরি করবে।

সম্পাদনা করুন : আমরা এই ক্ষমতাটি app:layout_constraintWidth_default="wrap"০.০ এ অ্যাট্রিবিউটের সাথে যুক্ত করেছি (প্রস্থটি 0 ডিপি সেট করে)। যদি সেট করা থাকে তবে উইজেটের একই আকার থাকবে যেমন মোড়ানো_ কনটেন্ট ব্যবহার করা হবে তবে সীমাবদ্ধতায় সীমাবদ্ধ থাকবে (যেমন এটি তাদের ছাড়িয়ে প্রসারিত হবে না)

আপডেট করুন এখন সেই ট্যাগগুলিকে অবহিত করা হয়েছে, পরিবর্তে বিন্যাস_উইথ = "Wrap_CONTENT" এবং লেআউট_কন্ট্রাইনডউইথ = "সত্য" ব্যবহার করুন।


1
আমার জন্য এটি একটি দুর্দান্ত সমস্যা। আমি এখনই যৌগিক ড্রইবলগুলি সহ টেক্সটভিউটি ব্যবহার করতে পারছি না কারণ আমি যদি এটিকে match_constraintsকম্বাউন্ডে সেট করি তবে অঙ্কনযোগ্য খুব ডানদিকে থাকবে, এমনকি খুব ছোট লেখা থাকলেও।
পল ওয়ালটাসেক

2
@ নিকোলাসরোয়ার্ড: আপনি কি আমাকে বাধা বিন্যাসে সাহায্য করতে পারেন, আমার উপরের অর্ধেকে 0.4 এর গাইডলাইন এবং নীচের বিষয়বস্তু সহ একটি চিত্র রয়েছে তবে আমি যখন সীমাবদ্ধ লেআউটটি মোড়ানোর জন্য সেট করি তখন এটি কেবল পর্দার 0.4 বাছাই করে (এবং অর্ধেক অংশে) নীচের পাঠ্যদর্শনগুলি দৃশ্যমান নয়), আমি app:layout_constraintWidth_default="wrap"খুব ভাল ব্যবহার করেছি এবং গ্রন্থাগারের v1.0.2 কিন্তু এটি সাহায্য করে না
-এ-ট্যাট-এ-ট্যাট রাতাতুইল

3
অ্যাপ্লিকেশন: লেআউট_কন্ট্রেন্টওয়াইডথ_ডিফল্ট = 0 ডিপি হিসাবে প্রস্থের সাথে "মোড়ানো" এটি দুর্দান্তভাবে করে!
টুনজি_ডি 5'17

11
এটি ডকুমেন্টেশন / নির্দেশিকায় এক্সপ্লিসিট হওয়া উচিত।
এসকিউএলাইট নুব

6
করা উচিত সম্পাদনা পদক্ষেপ বৃহত্তর প্রাধান্য আছে? মূল নীচে হারিয়ে যায়। উত্তরটির প্রশংসা করুন। ধন্যবাদ @ নিকোলাসরোড।
টম হাওয়ার্ড

276

আপডেট হয়েছে (কনট্রেন্টলয়েট ১.১। +)

ব্যবহারের app:layout_constrainedWidth="true"সঙ্গেandroid:layout_width="wrap_content"

পূর্বে (অবনমিত):

app:layout_constraintWidth_default="wrap" সঙ্গে android:layout_width="0dp"


5
সত্য, কনস্ট্রেন্টলয়েট ১.১.০ বিটা ২ থেকে, আমি বিশ্বাস করি। androidstudio.googleblog.com/2017/10/…
ফাইফর শেপ

2
এটি এখন 1.1 প্রকাশে: मध्यम.com
এসড্রাস লোপেজ

প্রেমের স্ট্যাকওভারফ্লো! ধন্যবাদ এটি আমাকে সাহায্য করেছে! মোড়ানো বিষয়বস্তু রাখুন, তবে কখনও বাধা ছাড়িয়ে যান না! # টিআইএল
ডেনিস অ্যান্ডারসন

কি উত্তর, এই অস্তিত্ব জানেন না! ধন্যবাদ মানুষ, 2 ঘন্টা বিকল্পের সাথে খেলার পরে এটি একটি ট্রিট কাজ করেছে!
dev2505

23

হ্যাঁ, নিকোলাস রোয়ার্ডের দেওয়া উত্তরে উল্লিখিত হিসাবে আপনি 0 ডিপি যুক্ত করতে app:layout_constraintWidth_default="wrap"এবং প্রস্থ স্থাপন করা উচিত । এবং আপনার বুদ্বুদ ডান সারিবদ্ধ করতে আপনার জন্য 1.0 সেট করা উচিত layout_constraintHorizontal_bias

এখানে চূড়ান্ত উত্স কোড:

<android.support.constraint.ConstraintLayout 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" >

    <TextView
        android:id="@+id/chat_message"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginStart="64dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintWidth_default="wrap"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:background="@drawable/chat_message_bubble"
        android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sodales accumsan tortor at bibendum." />

</android.support.constraint.ConstraintLayout>

ফলস্বরূপ এটি দেখে মনে হচ্ছে:

এখানে চিত্র বর্ণনা লিখুন


আমি মনে করি এটি কারণ ওপি বামদিকে ছোট বুদ্বুদ চায় এবং আপনার ডানদিকে আছে, যা প্রয়োজনীয়তাগুলি পরিবর্তন করে
ওয়াজা_বি

2
এখানে গুরুত্বপূর্ণ অংশটি হলapp:layout_constraintHorizontal_bias="1.0"
লেস্টার

9

অন্য উত্তরগুলির মতো ইতিমধ্যে বলেছে, কনস্ট্র্যান্টলায়আউট ১.০ থেকে এটি অর্জন সম্ভব, তবে সর্বাধিক প্রকাশিত (১.১.x) হিসাবে তারা এটি কীভাবে করবেন তা পরিবর্তন করেছে।

কনস্ট্রেন্টলয়েট ১.১ প্রকাশের পরে পুরানো app:layout_constraintWidth_default="wrap"এবং app:layout_constraintHeight_default="wrap"বৈশিষ্ট্যগুলি এখন হ্রাস করা হয়েছে

আপনি যদি কোনও wrap_contentআচরণ সরবরাহ করতে চান তবে তবুও আপনার ভিউতে সীমাবদ্ধতাগুলি প্রয়োগ করেন, আপনার ডকস অনুসারে বর্ণিত এবং / অথবা বৈশিষ্ট্যগুলির wrap_contentসাথে মিলিয়ে এর প্রস্থ এবং / অথবা উচ্চতা নির্ধারণ করা উচিত :app:layout_constrainedWidth=”true|false”app:layout_constrainedHeight=”true|false”

র‌্যাপ_কন্টেন্ট: সীমাবদ্ধতাগুলি প্রয়োগ করা (১.১ এ যুক্ত করা হয়েছে) যদি কোনও মাত্রা Wrap_CONTENT এ সেট করা থাকে তবে সংস্করণে ১.১ এর পূর্বে এগুলিকে আক্ষরিক মাত্রা হিসাবে বিবেচনা করা হবে - অর্থাত্ সীমাবদ্ধতাগুলি ফলাফলের মাত্রা সীমাবদ্ধ করবে না। যদিও সাধারণভাবে এটি যথেষ্ট (এবং দ্রুত) বেশিরভাগ পরিস্থিতিতে আপনি Wrap_CONTENT ব্যবহার করতে চাইতে পারেন, তবুও ফলাফলের মাত্রা সীমাবদ্ধ করার জন্য সীমাবদ্ধতাগুলি প্রয়োগ করুন। সেক্ষেত্রে আপনি সংশ্লিষ্ট বৈশিষ্ট্যগুলির মধ্যে একটি যুক্ত করতে পারেন:

অ্যাপ্লিকেশন: লেআউট_constrainedWidth = "সত্য | মিথ্যা" অ্যাপ: লেআউট_কন্ট্রাইনডহাইট = "সত্য | মিথ্যা"

সর্বশেষ প্রকাশের কথা হিসাবে, আমি যেহেতু এটির উত্তর দিয়েছি, কনস্ট্রেন্টলয়েট সংস্করণ 1.1.2 এ রয়েছে


3

অ্যাপের অবচয়

@ এর Nicolas-roard এর উত্তর app:layout_constraintWidth_default="wrap"এবং android:layout_width="0dp"এখন থামানো হয়েছে

এগিয়ে যান এবং ব্যবহার করুন app:layout_constrainedWidth="true"এবং android:layout_width="wrap_content"

অবমূল্যায়নের কারণ, আমি জানি না। তবে কনস্ট্রেন্টলআউট এর উত্স কোডে এটি সঠিক


-7

আমি এটি ব্যবহার করি

app:layout_constraintEnd_toEndOf="parent"

এটি কীভাবে উত্তর দেয়? কিভাবে এই মোড়ানো বিষয়বস্তু?
অ্যালেক্স

-8

আপনার প্রতিস্থাপন করা উচিত

android:layout_width="wrap_content"

সঙ্গে

android:layout_width="match_parent"

আপনার টেক্সটভিউ থেকে এবং তারপরে প্যাডিং এবং মার্জিন সামঞ্জস্য করুন। আমি আপনার কোড আপডেট করেছি,

<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="wrap_content">

<TextView
    android:id="@+id/chat_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="10dp"
    android:layout_marginLeft="60dp"
    android:layout_marginRight="10dp"
    android:layout_marginStart="60dp"
    android:layout_marginTop="8dp"
    android:padding="16dp"
    app:layout_constraintTop_toTopOf="parent"
    tools:background="#c9c7c7"
    tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sodales accumsan tortor at bibendum." />

আপনি এই ফলাফল পাবেন এখানে চিত্র বর্ণনা লিখুন


কনস্ট্রেন্টলয়েট-এ কোনও দৃশ্যের জন্য আপনার "ম্যাচ_প্যারেন্ট" ব্যবহার করা এড়ানো উচিত। এখানে
ইউজিন ব্রুসভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.