অনুভূমিক অগ্রগতি বার থেকে উল্লম্ব প্যাডিং সরান


127

ডিফল্টরূপে প্রগতিবারের বারের উপরে এবং নীচে একটি নির্দিষ্ট প্যাডিং থাকে। এই প্যাডিংটি সরিয়ে দেওয়ার কোনও উপায় আছে যাতে কেবল শেষদিকে বারটি থাকে?


7
অন্যান্য বিষয় হিসাবে উল্লিখিত, সেটিং maxHeight, কাজ করে না।
abergmeier

android:minHeight="4dp"
স্যাম চেন

উত্তর:


71

এই সমস্যাটির জন্য আমি নিম্নলিখিতটি একটি কার্যকারণ হিসাবে ব্যবহার করি।

android:layout_marginBottom="-8dp"
android:layout_marginTop="-4dp"

1
আমার লেআউট_মারগিনবোটম দরকার নেই।
অ্যালিকেলিন-কিলাকা

11
android:layout_marginTop="-6dp"আমার জন্য কাজ। এটি ডিভাইসের উপর নির্ভরশীল কিনা তা ভাবছেন? আমি কেবল এক্সপিরিয়া জেড 1
থরবজর্ন ক্যাপেল হ্যানসেন

2
@ ThorbjørnKappelHansen এটি ডিভাইস নির্ভর। গ্যালাক্সি এস 6 এবং -6 ডিপি-র একটি মার্জিন শীর্ষ পছন্দ অনুযায়ী কাজ করে না।
মুহাম্মদ আবদুল-রহিম

1
আমি মনে করি মার্জিনগুলি অগ্রগতি বারের ও অ্যান্ড্রয়েড সংস্করণের আকারের উপর নির্ভর করবে।
নোয়েল

2
ব্যবহার করা Framelayout( এই উত্তরটির মতো আরও ভাল সমাধান এবং ফোনের আকার / প্রকার / ওএস সংস্করণের উপর নির্ভর করে না
koceeng

57

এইভাবে আমি জুজাসের উত্তরটি ব্যবহার করেছি:

আমার উচ্চতা ProgressBar4dp হয়। তাই আমি একটি নির্মিত FrameLayoutউচ্চতা 4dp ও সেট layout_gravityএর ProgressBarজন্য center। এটি একটি কবজির মতো কাজ করে।

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="4dp">

    <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="4dp"
        android:layout_gravity="center"
        android:indeterminate="true"/>

</FrameLayout>

23
এটি একটি ভাল ধারণা, তবে সমর্থন কোড লাইব্রেরির অগ্রগতি বারটি ব্যবহার করে আপনার কোডটি Android 7.0 এ আমার জন্য কাজ করে নি। বারটি কেবল পাতলা হয়ে গেছে তবে শীর্ষে প্যাডিং রয়েছে।
স্যাম

4
@ সাম কেবল প্রগতিবারটি করুন যেমন উচ্চতা = 100 ডিপি। ফ্রেমলআউটটির কারণে এটি এখনও 4 ডিপি থাকে তবে বারটি আরও ঘন দেখায়।
মেগেট্রন

5
24+ এপিআই এ ওয়ার্কিন নয়। বারটি কেবল পাতলা হয়ে যায় কারণ আমরা এটির আকারটি নির্ধারণ করি।
মাউকার

36

আমি এই সমস্যাটি সমাধান করার জন্য একটি কাস্টম লাইব্রেরি ব্যবহার করে শেষ করেছি। অন্যান্য সমাধানগুলির বেশিরভাগই কাজ করে তবে ফলাফল বিভিন্ন ডিভাইসের সাথে সামঞ্জস্যপূর্ণ নয়।

MaterialProgressBar

  • অ্যান্ড্রয়েড 4.0+ এ নিয়মিত উপস্থিতি।
  • প্ল্যাটফর্ম জুড়ে টিংটিং সঠিক করুন।
  • ফ্রেমওয়ার্ক অগ্রগতি বারের অভ্যন্তরীণ প্যাডিং অপসারণ করতে সক্ষম।
  • ফ্রেমওয়ার্ক অনুভূমিক প্রগতিবারের ট্র্যাকটি আড়াল করতে সক্ষম।
  • ফ্রেমওয়ার্ক প্রগ্রেসবারের জন্য একটি ড্রপ-ইন প্রতিস্থাপন হিসাবে ব্যবহৃত।

গ্রেড নির্ভরতা হিসাবে যুক্ত করতে:

compile 'me.zhanghai.android.materialprogressbar:library:1.1.7'

আপনার বিন্যাসে কোনও অভ্যন্তরীণ প্যাডিং সহ একটি অগ্রগতি বার যুক্ত করতে:

<me.zhanghai.android.materialprogressbar.MaterialProgressBar
    android:layout_width="wrap_content"
    android:layout_height="4dp"
    android:indeterminate="true"
    app:mpb_progressStyle="horizontal"
    app:mpb_useIntrinsicPadding="false"
    style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal" />

app:mpb_useIntrinsicPadding="false"কৌতুক করে আরও তথ্যের জন্য গিটহাব পৃষ্ঠাটি দেখুন


প্রথমে আমি কিছু প্যাডিং অপসারণ করার জন্য অন্য নির্ভরতা যুক্ত করতে এড়াতে চেষ্টা করেছি। তবে অন্য সমস্ত সমাধানগুলি এক বা অন্যভাবে / সংস্করণে ব্যর্থ হয়েছে এবং শেষ পর্যন্ত এটি কার্যকর করতে 3 মিনিটের মতো হয়েছিল !! ধন্যবাদ.
টনি টর্নেডো

32
একটি দৃশ্যে প্যাডিং ঠিক করার জন্য একটি পুরো লাইব্রেরি। গুগল যাওয়ার উপায়
ডেনি

আপনি উপরের (আপনার সেটআপ উপর নির্ভর করে) জন্য @ শৈলী / Widget.AppCompat.ProgressBar.Horizontal ব্যবহার করতে পারেন
Ror

32

যদি কারও এখনও সহায়তার প্রয়োজন হয় তবে এটি চেষ্টা করে দেখতে পারেন:

<androidx.core.widget.ContentLoadingProgressBar
    android:id="@+id/progress"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="@+id/guideline"
    android:indeterminate="true"
    android:visibility="visible"
    app:layout_constraintBottom_toTopOf="@+id/guideline" />

এখানে, প্রগতি দণ্ড ভিতরে ConstraintLayout এবং constraintTop_toTopOf এবং constraintBottom_toTopOf বৈশিষ্ট্যাবলী (এই ক্ষেত্রে, এটা নির্দেশিকা) একই উপাদানে প্রয়োগ করা আবশ্যক।

*** সম্পূর্ণ সমাধান: ***

<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="48dp">

<View
    android:id="@+id/guideline"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:orientation="vertical"
    android:visibility="invisible"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

<ProgressBar
    android:id="@+id/progress_bar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="true"
    app:layout_constraintBottom_toTopOf="@+id/guideline"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/guideline" />
</androidx.constraintlayout.widget.ConstraintLayout>

5
এটি পুরোপুরি কার্যকর হিসাবে এটি সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত!
ফিলিও

1
এটাই সঠিক উত্তর! আপনি সমস্ত ডিভাইসের সাথে সামঞ্জস্যপূর্ণ (যা নেতিবাচক মার্জিন হতে পারে না) এবং অ্যান্ড্রয়েড সংস্করণগুলি (যা ফ্রেম বিন্যাস সমাধান দ্বারা সরবরাহ করা হয় না)। এছাড়াও আপনাকে অ্যাপ্লিকেশনটিতে সিস্টেমের আঁকাগুলি আমদানির মাধ্যমে প্রয়োজনীয় সমস্ত কাজ করতে হবে না (যা সমস্ত অ্যান্ড্রয়েড সংস্করণে সিস্টেম জুড়ে একটি সুসংগত UI সরবরাহ করে না)।
ভাইওস

2
@ অলি_ওয়ারিস একটি উত্তর পোস্ট করার জন্য ধন্যবাদ, আমি এই সমাধানটি কাজ করতে অক্ষম হিসাবে বুঝতে আগ্রহী। কনস্ট্রেন্টলআউট এবং উত্তরের গাইডলাইন অন্তর্ভুক্ত করার জন্য আপনি উত্তরটি প্রসারিত করতে পারেন?
স্কটিয়াব

এখানে গাইডলাইন কি? কোথায় যাবে?
আইমগোপাল

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

16

এমন প্যারেন্টের অভ্যন্তরে উল্লম্ব কেন্দ্রিক প্রগতিবার অঙ্কন করা সম্ভব যা প্যাডিংটি সরিয়ে ফেলবে। যেহেতু প্রগতিবারটি পিতামাতার চেয়ে নিজেকে বড় করে তুলতে পারে না, তাই ক্লিপিং ভিউয়ের ভিতরে রাখতে আমাদের অবশ্যই একটি বড় পিতামাতার তৈরি করতে হবে।

<FrameLayout
    android:id="@+id/clippedProgressBar"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="4dp"
    tools:ignore="UselessParent">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="16dp"
        android:layout_gravity="center_vertical">

        <ProgressBar
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:indeterminate="true"/>

    </FrameLayout>

</FrameLayout>

1
এটি অ্যান্ড্রয়েড .0.০ এ কাজ করেছে, তবে এর ফলে আমার সনি এক্সপিরিয়া এম অ্যান্ড্রয়েড ৪.১.২ চালিত কোনও অগ্রগতি বার হয়নি।
স্যাম

@ সাম রিপোর্টের জন্য ধন্যবাদ! আপনি যদি প্রথম ফ্রেমলাইআউটের উচ্চতা 4 ডিপি থেকে 48 ডিপিতে পরিবর্তন করেন তবে আপনি কী দেখতে পাচ্ছেন?
জুউজাস কনটভেইনিস

অগ্রগতি বারটি উপস্থিত হয় তবে এর নীচে এর অনেকগুলি প্যাডিং রয়েছে এবং এটির উপরে একটি ছোট্ট প্যাডিং রয়েছে।
স্যাম

@ সাম আমি আমার উত্তর আপডেট করেছি, আশা করি এটি আপনার সনি ডিভাইসে গ্রহণযোগ্যভাবে কাজ করবে। এটি যদি সহায়তা না করে তবে আমি আপনার অ্যাপ্লিকেশন থিম কনফিগারেশনটি পর্যালোচনা করার পরামর্শ দিচ্ছি। KitKat এ হলো থিম ব্যবহার করা এটি ঠিক করা উচিত।
জুউজাস কনটভেইনিস

15

এর আক্ষরিক প্যাডিং অপসারণ ProgressBarকরতে, আপনি এর মাধ্যমে করতে পারেন

  • এর উচ্চতা ঠিক করুন ProgressBar
  • স্কেলওয়াই = "মান" (মান = উচ্চতা / 4) ব্যবহার করুন (4 অগ্রগতির বারের ডিফল্ট উচ্চতা)

উদাহরণ 1 wrap_content রয়েছে ProgressBar, 1 8dp ProgressBar, 1 100dpProgressBar

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

<ProgressBar
    style="?android:attr/progressBarStyleHorizontal"
    ...
    android:layout_height="8dp"
    android:scaleY="2" />

14

এই সমস্যার একটি সম্পূর্ণ সমাধান নিম্নলিখিত হবে। যদি কারও কোডের টুকরোগুলি দরকার হয় তবে আমি এটি করেছি।

  1. 8 টি অনিয়মিত অনুভূমিক অগ্রগতি ড্রয়যোগ্য সমস্ত অনুলিপি করেছেন
  2. কিছু চিত্র ম্যানিপুলেটর ব্যবহার করে অঙ্কনযোগ্যগুলি সম্পাদনা করে এবং অপ্রয়োজনীয় প্যাডিংগুলি সরিয়ে দেয়
  3. অ্যান্ড্রয়েড প্ল্যাটফর্ম থেকে প্রগতি_সেটেরমিট_হোরাইজেন্টাল_হোলো.এক্সএমএল নামক অঙ্কনযোগ্য এক্সএমএল অনুলিপি করেছেন
  4. স্টাইলের উইজেটটি অনুলিপি করেছেন। প্রোগ্রেসবার.হরাইজেন্টাল এবং এর পিতামাতারা
  5. বিন্যাসে শৈলী এবং মিনি_ উচ্চতা ম্যানুয়ালি সেট করুন

এখানে অগ্রগতি_সীমা নির্ধারণ_হরিজন্টাল_হোলো.এক্সএমএল

<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
<item android:drawable="@drawable/progressbar_indeterminate_holo1" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo2" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo3" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo4" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo5" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo6" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo7" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo8" android:duration="50" />

শৈলীর সংস্থানগুলি আমার স্থানীয় শৈলীর ফাইলে অনুলিপি করেছে।

<style name="Widget">
    <item name="android:textAppearance">@android:attr/textAppearance</item>
</style>

<style name="Widget.ProgressBar">
    <item name="android:indeterminateOnly">true</item>
    <item name="android:indeterminateBehavior">repeat</item>
    <item name="android:indeterminateDuration">3500</item>
</style>

<style name="Widget.ProgressBar.Horizontal">
    <item name="android:indeterminateOnly">false</item>
    <item name="android:indeterminateDrawable">@drawable/progress_indeterminate_horizontal_holo</item>
</style>

এবং পরিশেষে, আমার স্থানীয় লেআউট ফাইলে ন্যূনতম উচ্চতা 4 ডিপি সেট করুন।

<ProgressBar
    android:id="@+id/pb_loading"
    style="@style/Widget.ProgressBar.Horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:indeterminate="true"
    android:minHeight="4dp"
    android:minWidth="48dp"
    android:progressDrawable="@drawable/progress_indeterminate_horizontal_holo" />

পদক্ষেপ 1 এ বর্ণিত অঙ্কনযোগ্যকে আমরা কোথা থেকে অনুলিপি করতে পারি: "1. 8 টি সব অনির্দিষ্ট অনুভূমিক অগ্রগতি চিত্রকটি অনুলিপি করেছেন"?
গ্রিনহ্যান্ড

3
@ জেফরিলিন আমি এই অবস্থান থেকে এটি অনুলিপি করেছি<your-sdk-folder>/platforms/android-17/data/res/drawable-hdpi/
সাবিন সেবাস্তিয়ান

33
অ্যান্ড্রয়েডে কেবলমাত্র ডিফল্টরূপে আসা এমন সাধারণ জ্ঞানের আচরণ অর্জনের জন্য আপনার কতটা কাজ করতে হবে তা অবাক করার মতো নয়?
স্পেসমুনকি

1
এবং উপাদান নকশা জন্য?
mrroboaat

@ অ্যাট আমি মনে করি না যে উপাদান নির্দেশিকাগুলিতে একই ধরণের অগ্রগতি রয়েছে। দয়া করে এই দস্তাবেজটি দিয়ে যান: google.com/design/spec/components/…
সাবিন সেবাস্তিয়ান

10

অনুভূমিক শৈলীর সাথে প্রগতিবার ব্যবহার করার সময় আমি একই সমস্যার মুখোমুখি হয়েছি।

মূল কারণ হ'ল অগ্রগতি বারের জন্য ডিফল্ট 9-প্যাচ অঙ্কনযোগ্য: (অগ্রগতি_বিজি_হোলো_ডार्क ৯.png) প্যাডিং হিসাবে কিছু উল্লম্ব স্বচ্ছ পিক্সেল রয়েছে।

চূড়ান্ত সমাধান যা আমার পক্ষে কাজ করেছে: অগ্রগতিটি অঙ্কনযোগ্য, আমার নমুনা কোডটি নিম্নরূপ করুন:

custom_horizontal_progressbar_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape android:shape="rectangle">
            <solid android:color="#33ffffff" />
        </shape>
    </item>
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape android:shape="rectangle">
                <solid android:color="#ff9800" />
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape android:shape="rectangle">
                <solid android:color="#E91E63" />
            </shape>
        </clip>
    </item>
</layer-list>

লেআউট স্নিপেট:

<ProgressBar
    android:id="@+id/song_progress_normal"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="5dp"
    android:layout_alignParentBottom="true"
    android:progressDrawable="@drawable/custom_horizontal_progressbar_drawable"
    android:progress="0"/>

এটি সম্ভবত সেরা সমাধান। যদিও আপনার উদাহরণ কোডটি আমার সনি এক্সপিরিয়া এম অ্যান্ড্রয়েড ৪.১.২ চলছে, তবে কোনও অগ্রগতি বার তৈরি করে নি।
স্যাম

8

একটি কৌশল আপনার অগ্রগতি বারে নেতিবাচক মার্জিন যুক্ত করা add

নীচে এটি আপনার স্ক্রিনের উপরে ধরে ধরে এক্সএমএল কোডের একটি উদাহরণ রয়েছে:

<ProgressBar
    android:id="@+id/progressBar"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="-7dp"
    android:layout_marginBottom="-7dp"
    android:indeterminate="true" />

কোড ফলাফল


নেতিবাচক মার্জিন যুক্ত করা আমার জন্য সমস্যার সমাধান করেছে। ধন্যবাদ!
আইক্রোভিচুয়াল

5

সুবিনের উত্তরটি কেবলমাত্র একটিই (বর্তমানে) মনে হয় যা অ্যান্ড্রয়েড প্রগ্রেসবারের ভবিষ্যতে প্রকাশে ভাঙ্গার বিষয় হিসাবে একটি ভঙ্গুর হ্যাক বিষয় নয়।

তবে সম্পদগুলি ভেঙে ফেলা, তাদের সংশোধন করা এবং অনির্দিষ্টকালের জন্য বজায় রাখার সমস্যায় পড়ার পরিবর্তে আমি মেটেরিয়াল প্রোগ্রেস বার লাইব্রেরিটি ব্যবহার করতে বেছে নিয়েছি , যা আমাদের জন্য এটি করে:

<me.zhanghai.android.materialprogressbar.MaterialProgressBar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="true"
    android:layout_gravity="bottom"
    custom:mpb_progressStyle="horizontal"
    custom:mpb_showTrack="false"
    custom:mpb_useIntrinsicPadding="false"
    style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal.NoPadding"
/>

বিল্ড.gradle এ:

// Android horizontal ProgressBar doesn't allow removal of top/bottom padding
compile 'me.zhanghai.android.materialprogressbar:library:1.1.6'

এই প্রকল্পটির একটি দুর্দান্ত ডেমো রয়েছে যা এটির সাথে বিল্ট-ইন প্রগ্রেসবারের মধ্যে পার্থক্য দেখায়।


4

যদি এখনও কেউ সমাধানের সন্ধান করে তবে - এই মন্তব্যটি দেখুন

সর্বনিম্ন উচ্চতা 4 ডিপি হতে সেট করুন

   android:minHeight="4dp"

-

  <ProgressBar
    android:id="@+id/web_view_progress_bar"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="false"
    android:max="100"
    android:min="0"
    android:progress="5"
    android:minHeight="4dp"
    android:progressTint="@color/vodafone_red"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:progress="60" />

আমি এই উত্তর পছন্দ।
স্যাম চেন

2

আমি মিনিহাইট এবং সর্বোচ্চ ব্যবহার করি e এটি বিভিন্ন এপিআই সংস্করণে সহায়তা করে।

<ProgressBar
    android:id="@+id/progress_bar"
    style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxHeight="3dp"
    android:minHeight="3dp" />

এটি উভয় ব্যবহার করা প্রয়োজন। এপিআই 23 ভাল কাজ করে

android:layout_height="wrap_content"
android:minHeight="0dp"

তবে নিম্ন এপি সংস্করণগুলি সেই ক্ষেত্রে অগ্রগতি বারের উচ্চতা ম্যাক্সহাইটে বাড়িয়ে তোলে।


2

নিম্নলিখিত চেষ্টা করুন:

<ProgressBar
    android:id="@+id/progress_bar"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:progress="25"
    android:progressTint="@color/colorWhite"
    android:progressBackgroundTint="@color/colorPrimaryLight"
    android:layout_width="match_parent"
    android:layout_height="4dp" />

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


2

লিনিয়ারলাউটের অভ্যন্তরে এটি ব্যবহার করুন

 <LinearLayout
        android:layout_width="match_parent"
        android:background="#efefef"
        android:layout_height="wrap_content">

        <ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:indeterminate="true"
            android:visibility="gone"
            android:layout_marginTop="-7dp"
            android:layout_marginBottom="-7dp"
            style="@style/Widget.AppCompat.ProgressBar.Horizontal"
            />

    </LinearLayout>

দুর্দান্ত কাজ! পরবর্তী সময় আপনার কোডটি কী করবে এবং কী কী পরিবর্তন হয়েছে তা বর্ণনা করুন। ;-)
জোকেলা

1

অ্যান্ড্রয়েড যুক্ত করুন: অগ্রগতি অঙ্কনযোগ্য হিসাবে সংজ্ঞায়িত একটি স্তর-তালিকার জন্য আমার জন্য সমস্যাটি স্থির করে ra এটি একটি কাস্টম অঙ্কনযোগ্য প্রেজ বারকে মাস্কিং করে কাজ করে

https://stackoverflow.com/a/4454450/1145905 এ বর্ণিত উদাহরণ প্রয়োগ


1

আমি ব্যবহার করছি style="@style/Widget.AppCompat.ProgressBar.Horizontal"এবং মার্জিনগুলি থেকে মুক্তি পাওয়া মোটামুটি সহজ ছিল। স্টাইলটি হ'ল:

    <item name="progressDrawable">@drawable/progress_horizontal_material</item>
    <item name="indeterminateDrawable">@drawable/progress_indeterminate_horizontal_material</item>
    <item name="minHeight">16dip</item>
    <item name="maxHeight">16dip</item>

আমি কেবল সর্বনিম্ন / সর্বাধিক উচ্চতাটিকে ছাড়িয়েছি:

    <ProgressBar
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:indeterminate="true"
        android:minHeight="2dp"
        android:maxHeight="2dp" />

জেনেরিক প্রগতি বারের সাথে আমি কখনই সন্তুষ্ট হইনি এবং শেষ পর্যন্ত একটি লাইব্রেরিতে ঘুরলাম: me.zhanghai.android.matoryprogressbar.MaterialProgressBar
অ্যান্টনি

1

কোনও নতুন মডিউল ডাউনলোড করতে বা আপনার অগ্রগতি বারের চারপাশে ফ্রেমলআউট লাগানোর প্রয়োজন নেই। এই সব ঠিক হ্যাক। মাত্র 2 টি পদক্ষেপ:

আপনার যাইহোক। এক্সএমএলে

<ProgressBar
    android:id="@+id/workoutSessionGlobalProgress"
    android:layout_width="match_parent"
    android:layout_height="YOUR_HEIGHT"
    android:progressDrawable="@drawable/progress_horizontal"
    android:progress="0"
    <!-- High value to make ValueAnimator smoother -->
    android:max="DURATION * 1000"
    android:indeterminate="false"
    style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal"/>

অগ্রগতি_হরিজন্টাল.এক্সএমএল, আপনার পছন্দ অনুযায়ী মান পরিবর্তন করুন।

গোলাকার কোণগুলি পছন্দ করবেন না?
কোণার ব্যাসার্ধ সরান

রং পছন্দ না? রং বদলাও ইত্যাদি!

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <gradient
                    android:startColor="#ff9d9e9d"
                    android:centerColor="#ff5a5d5a"
                    android:centerY="0.75"
                    android:endColor="#ff747674"
                    android:angle="270"
                    />
        </shape>
    </item>

    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                        android:startColor="#80ffd300"
                        android:centerColor="#80ffb600"
                        android:centerY="0.75"
                        android:endColor="#a0ffcb00"
                        android:angle="270"
                        />
            </shape>
        </clip>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                        android:startColor="#ffffd300"
                        android:centerColor="#ffffb600"
                        android:centerY="0.75"
                        android:endColor="#ffffcb00"
                        android:angle="270"
                        />
            </shape>
        </clip>
    </item>

</layer-list>

সাধারণত, আপনার পছন্দ না এমন কোনও কিছুর কোড পরিবর্তন করার জন্য এই পদক্ষেপগুলি। কেবল উত্স কোডটি সন্ধান করুন এবং কী পরিবর্তন করবেন তা নির্ধারণ করুন। আপনি যদি প্রগতিবার উত্স কোডটি অনুসরণ করেন তবে আপনি প্রগ্রেস_হরিজন্টল.এক্সএমএল নামে একটি ফাইল পাবেন যা এটি উল্লেখ করে। মূলত আমি কীভাবে আমার সমস্ত এক্সএমএল সমস্যাগুলি সমাধান করি।


0
 <ProgressBar
        android:layout_marginTop="-8dp"
        android:layout_marginLeft="-8dp"
        android:layout_marginRight="-8dp"
        android:id="@+id/progress_bar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="4dp"
        android:indeterminate="false"
        android:indeterminateTint="@color/white"
        android:max="100"
        android:paddingStart="8dp"
        android:paddingRight="0dp"
        android:progressDrawable="@drawable/progress_bg" />

0
<androidx.core.widget.ContentLoadingProgressBar
                    android:id="@+id/progressBar"
                    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:indeterminate="true"
                    android:paddingTop="2dp"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintBottom_toTopOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"/>

দয়া করে কেবল কোড পোস্ট করবেন না। আপনার উত্তরে কিছু প্রসঙ্গ দিন।
মার্টিন গাল

0

কেবল ম্যাটেরিয়াল প্রগ্রেস ইন্ডিকেটর ব্যবহার করুন যার কোনও লুকানো মার্জিন নেই।

<com.google.android.material.progressindicator.ProgressIndicator
        android:id="@+id/progressBar"
        style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:indicatorColor="@color/colorPrimary"
        app:trackColor="@color/colorAccent" />

-1

একটি সাধারণ নো ট্রিকস সমাধান যা অ্যান্ড্রয়েডের যে কোনও সংস্করণের সাথে সামঞ্জস্যপূর্ণ এবং বাহ্যিক লাইব্রেরিগুলির প্রয়োজন হয় না তার ভিতরে ProgressBarদুটি সাথে নকল হয় । এটিই আমি শেষ করেছি। দেখতে বেশ ঝরঝরে এবং এই পদ্ধতিটি বেশ নমনীয় - আপনি এটিকে ফানকি উপায়ে প্রাণবন্ত করতে পারেন, পাঠ্য যোগ করতে পারেন etc.ViewsLinearLayout

লেআউট:

<LinearLayout
    android:id="@+id/inventory_progress_layout"
    android:layout_width="match_parent"
    android:layout_height="4dp"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/inventory_progress_value"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/inventory_progress_remaining"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

কোড:

public void setProgressValue(float percentage) {
    TextView progressValue = (TextView) findViewById(R.id.inventory_progress_value);
    TextView progressRemaining = (TextView) findViewById(R.id.inventory_progress_remaining);

    LinearLayout.LayoutParams paramsValue = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    LinearLayout.LayoutParams paramsRemaining = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

    paramsValue.weight = (100 - percentage);
    paramsRemaining.weight = percentage;

    progressValue.setLayoutParams(paramsValue);
    progressRemaining.setLayoutParams(paramsRemaining);

}

ফলাফল (কিছু উচ্চতা যোগ করা সহ):

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


-1

সবচেয়ে ভাল সমাধান হওয়া উচিত

android:minHeight="0dp"

কোন workaround এবং কবজ মত কাজ করে না।


কাজ হয়নি, দয়া করে ব্যাখ্যা করতে পারেন কেন এটি কাজ করা উচিত?
বিনীত_উल्फ

@ হুম্বল_উল্ফ যখন উত্তরটি লিখেছিলাম তখন এটি আমার আগের প্রকল্পে কাজ করেছিল; গ্রন্থাগারের কিছু নির্দিষ্ট সংস্করণের উপর নির্ভরশীল হতে পারে? এটি কাজ করা উচিত কারণ প্রগতি বারের জন্য প্যাডিংয়ের কারণটি আসল প্যাডিং নয় তবে minHeightএটি 0 এর চেয়ে বড় (সম্ভবত 32dp বলুন) পূর্বনির্ধারিত। এই সম্পত্তি পরিবর্তন করে আপনি একটি অন্য চেহারা পাবেন।
অ্যালেক্স ফ্যান

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