রিলেটিভলআউট মোড়ক_সামগ্রীর জন্য পূর্ণস্ক্রিন নিচ্ছে


126

যখন কোনও উপাদান layout_height="fill_parent"অন্য কথায় না থাকে, সমস্ত উপাদানগুলি উচ্চতার জন্য মোড়ানো_বিহীন কেন FOOBARZ নীচে সমস্ত উপায়ে বিছানাযুক্ত হয় ? এখানে চিত্র বর্ণনা লিখুন

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/feed_u"
        android:layout_width="50dip"
        android:layout_height="50dip"
        android:layout_marginLeft="5dip"
        android:scaleType="centerCrop"
        android:drawableTop="@android:drawable/presence_online"
        android:text="U" />
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/feed_u">
        <ImageView
            android:id="@+id/feed_h"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/btn_minus" />
        <ImageView
            android:id="@+id/feed_ha"
            android:layout_toLeftOf="@id/feed_h"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/btn_plus" />
        <TextView
            android:id="@+id/feed_t"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Title">
        </TextView>
        <TextView
            android:id="@+id/feed_a"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Band"
            android:layout_below="@id/feed_t">
        </TextView>
        <TextView
            android:id="@+id/feed_s"
            android:layout_below="@id/feed_a"
            android:text="S"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content">
        </TextView>
        <TextView
            android:id="@+id/feed_tm"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:text="FOOBARZ"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content">
        </TextView>

    </RelativeLayout>
</RelativeLayout>

1
hierarchyviewerজিনিসগুলি কোথায় ভুল হচ্ছে তা নির্ধারণের জন্য অ্যালিপসে হায়ারার্কি দৃষ্টিকোণটি ব্যবহার করুন : ডেভেলপার.অ্যান্ড্রয়েড.
com

গ্রহণের অভ্যন্তরের শ্রেণিবিন্যাসের দৃষ্টিভঙ্গি কোথায়? কোন পর্দা?
শিকারি

1
উইন্ডো> দৃষ্টিভঙ্গি খুলুন> অন্যান্য ... - যদিও আমি মনে করি আপনার কাছে ইতিমধ্যে আপনার উত্তরটি রয়েছে, সৌজন্যে @alextc।
কমন্সওয়্যার

@ কমন্সওয়্যারটি আমি এটি খুঁজে পেয়েছি, তবে এটি ফাঁকা, আমি কীভাবে এটির মধ্যে একটি লেআউটটি আসলে লোড করতে পারি ??
শিকারি

উত্তর:


266

RelativeLayoutডক থেকে :

ক্লাস ওভারভিউ

একটি লেআউট যেখানে বাচ্চার অবস্থানগুলি একে অপরের সাথে বা পিতামাতার সাথে সম্পর্কিত হতে পারে।

মনে রাখবেন যে আপেক্ষিক লেআউটের আকার এবং এর বাচ্চাদের অবস্থানের মধ্যে বিজ্ঞপ্তি নির্ভরতা থাকতে পারে না। উদাহরণস্বরূপ, আপনার এমন একটি রিলেটিভ লেআউট থাকতে পারে না যার উচ্চতা Wrap_CONTENT এ সেট করা থাকে এবং একটি শিশু ALIGN_PARENT_BOTTOM এ সেট থাকে

ক্লাস ডকুমেন্টেশন

যা ঠিক আপনার ক্ষেত্রে। রিলেটিভলআউট এটি করতে পারে না।


3
সুতরাং আমি align_parentBottom সরানো হয়েছে এবং লেআউটটি এখন কেবল 1-10 স্ক্রিনের মতো হওয়া উচিত, আমি কীভাবে এর নীচে FOBARZ রাখতে পারি?
শিকারি

2
কেবলমাত্র একটি সংক্ষিপ্ত নজর রেখে আমি বলব: FOOBARZ পাঠ্যদর্শনটি ধরুন, এটিকে বহিরাগত রিলেটিভলয়েট এ সরান এবং অ্যান্ড্রয়েড সেট করুন: বিন্যাস_বেলো = "@ আইডি / ফিড_উ"। আমি ঠিক নিশ্চিত নই যে আপনি যা চান তা এটিই কিনা।

আপনি কি আপেক্ষিক বিন্যাসে একটি নির্দিষ্ট উচ্চতা নির্ধারণের চেষ্টা করেছেন (উদাহরণস্বরূপ android:layout_height="200dp"এটি আপনাকে ব্যবহার করতে দেয়android:layout_alignParentBottom="true"
জিফ্রিগন

1
নোট করুন যে ব্যাকগ্রাউন্ড হিসাবে একটি বৃহত অঙ্কনযোগ্য ব্যবহার করার সময় এটিও ঘটতে পারে। এটিকে ঘিরে <ImageView>ধরার জন্য, মূল বিষয়বস্তুটিকে একটি শিশু বিন্যাসে টানুন এবং পটভূমিটিকে এর পিছনে থাকা একটি ভাইবোন করুন ।
বেন লেগিগেরো

1
আমি লক্ষ্য করেছি যে বাচ্চাদেরও একটি ব্যবহার করার অনুমতি layout_heightনেইmatch_parent
ড্যানিয়েল এফ

52

যারা এর সমাধান খুঁজছেন তাদের জন্য, আমি যেমন করেছিলাম, আপনি এর FrameLayoutপরিবর্তে ব্যবহার করতে পারেন RelativeLayout

তারপরে আপনি মাধ্যাকর্ষণটি নীচের মতো করে নিচের দিকে ঠিক করতে পারেন

<TextView
    android:layout_gravity="bottom|right"
    android:text="FOOBARZ"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">
</TextView>

ফ্রেমলআউট ব্যবহার করুন দুর্দান্ত সমাধান। এই লেআউটে আপনার আরও উপাদান থাকলে ওভারল্যাপ এড়াতে আপনাকে মার্জিন সেট করতে হবে।
ভেরোনি

23

আপনি "wrap_content" রিলেটিভলআউট এবং টেক্সটভিউতে এতে সেট করে রেখেছেন android:layout_alignParentBottom="true", সুতরাং এটি স্বয়ংক্রিয়ভাবে নীচে আপেক্ষিক লেআউট প্রসারিত করার চেষ্টা করে। রিলেটিভ লেআউটের সাথে এ জাতীয় নির্ভরতা ব্যবহার করবেন না, কারণ এটি "বিজ্ঞপ্তি নির্ভরতা" হিসাবে গণ্য হতে পারে।

থেকে RelativeLayout এর জন্য দস্তাবেজ :

মনে রাখবেন যে আপেক্ষিক লেআউটের আকার এবং এর বাচ্চাদের অবস্থানের মধ্যে বিজ্ঞপ্তি নির্ভরতা থাকতে পারে না। উদাহরণস্বরূপ, আপনার কোনও রিলেটিভলআউট থাকতে পারে না যার উচ্চতা সেট করা WRAP_CONTENTএবং একটি শিশু সেট করা থাকে ALIGN_PARENT_BOTTOM

আপনার পাঠ্যদর্শনটি প্যারেন্ট রিলেটিভলআউট ব্যতীত অন্য কিছুতে প্রান্তিককরণের চেষ্টা করুন, তবে এই সমস্যাটির জন্যও নজর রাখুন:
বিজ্ঞপ্তি নির্ভরতা, সঠিক কোড সহ কিছুটা সহায়তা দরকার

বিকল্পভাবে, আরও পরিশীলিত অভ্যন্তর লেআউট যুক্ত করার চেষ্টা করুন।


2
যাইহোক, আমি রানটাইমের সময় ভাবি - আপনার কোডটি আপনার পছন্দ অনুযায়ী প্রদর্শিত হবে, এমনকি "অ্যান্ড্রয়েড: লেআউট_লাইন্পেন্টব্যাটম =" সত্য "" দিয়েও। দেখে মনে হচ্ছে, অ্যান্ড্রয়েড রানটাইমে এই ক্ষেত্রে কিছু অতিরিক্ত পার্সিং করে এবং এটি সঠিকভাবে প্রদর্শন করে। আপনার অ্যাপ্লিকেশন চালানোর চেষ্টা করা উচিত।
দিরোল

0

ভাল উত্তর। এখন যদি আপনার কাছে না থাকে layout_alignParentBottom="true"এবং এখনও এই সমস্যাটি পেয়ে থাকে তবে android:background="@drawable/bkgnd"বেকগেন্ডটি কোনও বিগী।


0

আমি নিশ্চিত না কেন এটি সম্পাদন করার পরিষ্কার এবং সুস্পষ্ট উপায় এখনও পোস্ট করা হয়নি। এই পারফরম্যান্ট সমাধানটি পরিচিত উচ্চতার সাথে যে কোনও ভিউ মাইভিউয়ের জন্য কাজ করে।

ফ্রেমআলাউটে আপনার RelativeLayoutউচ্চতার সাথে wrap_contentমোড়ক করুন:

<!-- width here should constrain RelativeLayout -->
<FrameLayout 
     android:layout_width="@dimen/my_layout_width"
     android:layout_height="wrap_content">

     <RelativeLayout  
          android:layout_width="match_parent"
          android:layout_height="wrap_content" />

     <MyView
        ...
        android:layout_gravity="bottom" />
</FrameLayout>

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


0

সন্তানের দর্শনগুলির সাথে স্বতন্ত্র পিতামহী প্রকারের বৈশিষ্ট্যগুলি ব্যবহার করবেন না

আপনি আপেক্ষিক মাধ্যাকর্ষণ সহ RelativeLayout এর পরিবর্তে ফ্রেম বিন্যাস ব্যবহার করতে পারেন

    <FrameLayout
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">
     <TextView
        android:layout_gravity="bottom|right"
        android:text="Hello "
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">

    </TextView>

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