অ্যান্ড্রয়েড কনস্ট্রেন্টলয়েট - অন্য দৃশ্যের উপরে একটি দৃশ্য রাখুন


115

আমি একটি এর ProgressBarউপরে একটি যুক্ত করার চেষ্টা করছি Button(উভয়ই এ এর ​​অভ্যন্তরে ConstraintLayout)।

<Button
    android:id="@+id/sign_in_button"
    android:layout_width="280dp"
    android:layout_height="75dp"
    android:layout_marginBottom="75dp"
    android:layout_marginTop="50dp"
    android:text="@string/sign_in"
    android:textColor="@color/white"
    android:textSize="22sp"
    android:textStyle="bold"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/passwordEditText"
    app:layout_constraintVertical_bias="0.0"/>

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toTopOf="@+id/sign_in_button"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="@+id/sign_in_button"
    android:layout_marginBottom="8dp"
    app:layout_constraintVertical_bias="0.5"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="@+id/sign_in_button"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="@+id/sign_in_button"/>

কিন্তু এমন কি কলিং পর bringToFrontউপর ProgressBarমধ্যে onCreate, এটা সবসময় পিছনে থাকার বিষয়টি মতেই Button

ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar);
progressBar.bringToFront();

এটি এত অদ্ভুত, আমি আপনার লেআউটটি সাথে কিছুটা খেলতে চেষ্টা করেছি, এমনকি চেইনটিও উল্টিয়ে দিচ্ছি যাতে অগ্রগতি বারটি সম্পাদনা পাঠ্যের সীমাবদ্ধ থাকে এবং বাটনটি অগ্রগতি বারের উপরে থাকে তবে মনে হয় বাটনটি সবসময় অগ্রগতি বারের শীর্ষে থাকে
লেলোম্যান

আপনি কি ফ্রেমলআউট ব্যবহার করতে পারবেন? চেষ্টা করে দেখুন, ফ্রেমলআউটে জেড-
ইনডেক্সটি

আমি অ্যাপ্লিকেশন ছাড়াই যাচাই করেছিলাম তেমনি আপনার পাসওয়ার্ডএডিটটেক্সটটি কোথায়: লেআউট_কন্ট্রেন্টটপ_ টোবটমঅফ = "@ + আইডি / পাসওয়ার্ডএডিটটেক্সট" আমি উপরের অগ্রগতি বার দেখতে পাচ্ছি আপনি যে পাসওয়ার্ডটি সরবরাহ করতে পারেন
অ্যাডিটটেক্সট

উত্তর:


179

উপর একটি উচ্চতা সেট করুন ProgressBar; 2dpকাজ মনে হচ্ছে।

android:elevation="2dp"

অনুরূপ প্রশ্নেরtranslationZ গৃহীত উত্তরে প্রস্তাবিত হিসাবে আপনি সেটিংস চেষ্টা করতে পারেন ।

আমি বিকল্প হিসাবে এই উত্তর জুড়ে এসেছিল ।


18
তবে elevationএবং translationZকেবলমাত্র API> = 21 এর জন্য, পুরানো API গুলি সম্পর্কে কী?
q126y

4
@ q126y আমি মনে করি না এআইপি 21 পর্যন্ত এটি একটি ইস্যুতে পরিণত হয়েছিল, তাই পুরানো এপিআইয়ের এটির প্রয়োজন হবে না। আমি এটি একটি এমুলেটর চলমান এপিআই 17 তে চেষ্টা করেছি এবং অগ্রগতি বারটি প্রত্যাশার মতো উপরে উপস্থিত হয়েছিল।
চেটিক্যাম্প

@ ক্যান্টিক্যাম্প তাহলে কীভাবে এটি পরিচালনা করবেন? এএস একটি সতর্কতা দিচ্ছে এটি কেবলমাত্র এপিআই স্তর 21 এবং ততোধিক কাজ করে।
অজয় এস

7
@ q126yViewCompat.setTranslationZ(view, 5)
সিলভিয়া এইচ

4
ViewCompat.setElavation(view, 20f)আপনাকে সাহায্য করে
sagus_helgy

12

এটি নিয়ন্ত্রণ করতে আমাদের অ্যান্ড্রয়েড: উচ্চতা ব্যবহার করা দরকার।

android:elevation="10dp"

এই উচ্চতা বৈশিষ্ট্যটি কেবলমাত্র API স্তর> = 21 এ কাজ করে below তবে নীচে এটি স্বাভাবিকভাবে আচরণ করবে। যদি আমরা বাটন দৃশ্যের নীচে অগ্রগতি যুক্ত করি তবে এটি অন্য ভিউয়ের শীর্ষে নীচে থাকা দৃশ্যটি দেখায়।


6

বেশিরভাগ ক্ষেত্রে, আপনি কেবল নীচের দিকে প্রদর্শিত হওয়া উচিত তার পরে উপরে আপনি যা দেখতে চান তা নির্ধারণ করতে পারেন।


আপনি কীভাবে নিশ্চিত হন যে
কোজ

@ ক্রিস্তান, কোড স্নিপেট বা একটি উদাহরণ সরবরাহ করা আরও ভাল। ধন্যবাদ
ব্লুওয়্যার

4
আমি ভাবছি কেন ProgressBarশীর্ষে নেই Buttonযদিও প্রশ্নের ProgressBarপরে সংজ্ঞা দেওয়া Buttonহয়েছে।
মাইকেল ওসোফস্কি

আমি এই সত্য ছিলেন কিন্তু কোন ব্যাপার যেখানে আমি বাধ্যতা বিন্যাস ক্রম একটি imageview রাখুন, এটা সবসময় পিছনে একটি বাটন উপস্থিত হয়
behelit

3

সীমাবদ্ধ বিন্যাসে আপনার ব্যবহার করা উচিত

traslationz

আপনি নীচে দেখতে চান চেয়ে উচ্চতর।


1

ডিফল্টরূপে বোতামটিতে ট্রান্সলেশনজেড সেট রয়েছে, সুতরাং আপনার কাছে দুটি বিকল্প রয়েছে

1 - অগ্রগতি বারটি অনুবাদ বোতামের উন্নয়নের চেয়ে বড় করুন

ViewCompat.setTranslationZ(progressBar, 5)// to support older api <21

2 - বোতামটি অনুবাদ করুন 0 তে করুন যাতে ভিউগুলি আপনার প্রতিবন্ধক লেআউটে যথাযথভাবে একে অপরের উপরে প্রদর্শিত হয়, আপনি স্টাইলটি বোতামে সেট করে এটি অর্জন করতে পারবেন

style="@style/Widget.AppCompat.Button.Borderless"

0

Android Sutdio 3.5 এর জন্য আপডেট উত্তর:

আপডেট হওয়া লেআউট সম্পাদকটিতে অ্যান্ড্রয়েড স্টুডিওর প্রকাশিত নোটগুলিতে প্রদর্শিত হিসাবে কোনটি সামনে থাকবে তা চয়ন করা এখন আরও সহজ easier

.. এছাড়াও, একটি নীল ওভারলে এখন সীমাবদ্ধতার লক্ষ্যটিকে হাইলাইট করে। এই হাইলাইটিং বিশেষভাবে কার্যকর যখন কোনও উপাদানকে অন্যটির সাথে ওভারল্যাপ করে বাধা দেওয়ার চেষ্টা করে।

https://developer.android.com/studio/reLives

আরও সহজ, যদি আপনি ভিউ আপ টেনে আনেন (কপির পেস্ট বা লেআউট সম্পাদকের অংশ গাছ থেকে) এটি নিম্ন অগ্রাধিকার পাবেন (সুতরাং এটি অন্যান্য দর্শনের পিছনে থাকবে)


0

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

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 //your all view inside it with button
 <Button/>......
  .........
 </androidx.constraintlayout.widget.ConstraintLayout>

 <ProgressBar
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

</FrameLayout>

0

যদিও android:elevation="4dp"বা traslationzকাজ করবে, তবে সেই API স্তরের জন্য কমপক্ষে 21 টি হওয়া উচিত some যদি কোনও কারণে আপনি এটি করতে না পারেন তবে নিশ্চিত করুন যে আপনি শীর্ষে যে মতামতটি দেখতে চান তা অন্য দর্শনের পরে উল্লেখ করা হয়েছে। উদাহরণস্বরূপ, আমি যদি চিত্রকল্পের শীর্ষে অগ্রগতি বারটি চাই:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:context=".ImageActivity">

<ImageView
   android:id="@+id/image_view"
   android:layout_width="0dp"
   android:layout_height="0dp"
   app:layout_constraintBottom_toBottomOf="parent"
   app:layout_constraintDimensionRatio="6:4"
   app:layout_constraintEnd_toEndOf="parent"
   app:layout_constraintStart_toStartOf="parent"
   app:layout_constraintTop_toTopOf="parent" />

<ProgressBar
   android:id="@+id/progress_bar"
   style="?android:attr/progressBarStyle"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   app:layout_constraintBottom_toBottomOf="parent"
   app:layout_constraintEnd_toEndOf="parent"
   app:layout_constraintStart_toStartOf="parent"
   app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.