क्षैतिज प्रगति से ऊर्ध्वाधर गद्दी निकालें


127

डिफ़ॉल्ट रूप से ProgressBar में बार के ऊपर और नीचे एक निश्चित पैडिंग होती है। क्या इस पैडिंग को हटाने का कोई तरीका है ताकि अंत में केवल बार हो?


7
जैसा कि अन्य विषयों में उल्लेख किया गया है, सेटिंग maxHeight, काम नहीं करती है।
abergmeier

android:minHeight="4dp"
सैम चेन

जवाबों:


71

मैं इस समस्या के लिए समाधान के रूप में निम्न का उपयोग करता हूं।

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

1
मुझे layout_marginBottom की आवश्यकता नहीं थी।
एलिकएल्ज़िन-किलाका

11
android:layout_marginTop="-6dp"मेरे लिए काम किया। आश्चर्य है कि क्या यह डिवाइस पर निर्भर है? मैंने केवल Xperia Z1
Thorbjørn Kappel Hansen

2
@ ThorbjørnKappelHansen यह डिवाइस पर निर्भर है। गैलेक्सी S6 और मार्जिन टॉप -6dp इच्छानुसार काम नहीं करता है।
मुहम्मद अब्दुल-रहीम

1
मुझे लगता है कि मार्जिन प्रगति बार और Android संस्करण के आकार पर निर्भर करेगा।
नोएल

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
यह एक अच्छा विचार है, लेकिन आपके कोड ने एंड्रॉइड 7.0 पर मेरे लिए समर्थन लाइब्रेरी प्रगति बार का उपयोग करके काम नहीं किया। बार सिर्फ पतला हो गया लेकिन फिर भी शीर्ष पर पैडिंग था।
सैम

4
@ सॅम बस प्रोग्रेसबोर बनाते हैं जैसे ऊँचाई = १०० डीपी। फ़्रेमलैटआउट के कारण यह अभी भी 4dp रहता है लेकिन बार मोटा दिखता है।
मेगाट्रॉन

5
एपीआई 24+ पर काम नहीं कर रहा है। बार सिर्फ इतना पतला होता है कि हम उस पर निर्धारित आकार से कोई फर्क नहीं पड़ता।
मौकर

36

मैंने इस समस्या को हल करने के लिए एक कस्टम लाइब्रेरी का उपयोग किया। अधिकांश अन्य समाधान काम करते हैं लेकिन परिणाम विभिन्न उपकरणों के अनुरूप नहीं होते हैं।

MaterialProgressBar

  • Android 4.0+ पर लगातार उपस्थिति।
  • प्लेटफार्मों के पार सही टिनिंग।
  • प्रोग्रेसबार के ढांचे की आंतरिक पैडिंग को हटाने में सक्षम।
  • क्षैतिज क्षैतिज प्रोग्रेसबार के ढांचे को छिपाने में सक्षम।
  • ProgressBar के लिए एक ड्रॉप-इन प्रतिस्थापन के रूप में उपयोग किया जाता है।

एक निर्भरता के रूप में जोड़ने के लिए:

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

अपने लेआउट में बिना आंतरिक पैडिंग के एक ProgressBar जोड़ने के लिए:

<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"उसने चाल चली। अधिक जानकारी के लिए GitHub पेज देखें ।


पहले मैंने एक और निर्भरता जोड़ने के लिए सिर्फ कुछ पैडिंग को हटाने से बचने की कोशिश की। लेकिन अन्य सभी समाधान एक या दूसरे तरीके / संस्करण में विफल रहे और अंत में यह काम करने के लिए 3 मिनट की तरह था !! धन्यवाद।
टोनी टोरनाडो

32
एक दृश्य पर पैडिंग को ठीक करने के लिए पूरी लाइब्रेरी। गूगल जाने का रास्ता।
डेनी

आप @ शैली / विजेट का उपयोग करना चाह सकते हैं ।AppCompat.ProgressBar। ऊपर के लिए क्षैतिज (आपके सेटअप के आधार पर)
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
यह सही जवाब है! आप सभी उपकरणों (जो नकारात्मक मार्जिन प्रदान नहीं किए जाते हैं) और Android संस्करण (जो फ्रेम लेआउट समाधान द्वारा प्रदान नहीं किए गए हैं) के अनुकूल हैं। इसके अलावा, आपको वह सभी काम करने की ज़रूरत नहीं है जो सिस्टम को ऐप में ड्रॉइबल्स आयात करके आवश्यक हैं (जो सभी एंड्रॉइड वर्जन के लिए सिस्टम में एक संगत यूआई प्रदान नहीं करता है)।
वैयोस

2
@Ali_Waris उत्तर पोस्ट करने के लिए धन्यवाद, मैं इस समाधान को समझने में उत्सुक हूं क्योंकि यह काम करने में असमर्थ है। क्या आप उत्तर को विस्तृत करने के लिए उत्तर को शामिल करने के लिए ConstraintLayout और दिशानिर्देश का विस्तार कर सकते हैं?
15

यहाँ क्या दिशानिर्देश है? कहां जाएगी?
gमगोपाल

दिशानिर्देश के बजाय आप खाली दृश्य का उपयोग कर सकते हैं <दृश्य ऐप: लेआउट_कॉस्ट्रेटरस्टार्ट_टोस्टार्टओफ़ = "पैरेंट" ऐप: लेआउट_कॉस्ट्रैंटएंड_टोएंडओफ़ = "पैरेंट" एंड्रॉइड: आईडी = "+ आईडी / गाइडलाइन" एंड्रॉइड: लेआउट_प्रक्रिया = "0dp" Android: Layout_height = "0% android" : अभिविन्यास = "वर्टिकल" एंड्रॉइड: विज़िबिलिटी = "अदृश्य" ऐप: लेआउट_कॉस्ट्रैटिनबॉटॉम_टोबॉटोमऑफ़ = "पैरेंट" />
कोच्चि

16

माता-पिता के अंदर लंबवत केंद्रित प्रोग्रेसबेर खींचना संभव है जो पैडिंग को दूर करेगा। चूंकि ProgressBar स्वयं को माता-पिता से बड़ा नहीं बना सकता, इसलिए हमें क्लिपिंग दृश्य के अंदर रखने के लिए एक बड़ा माता-पिता बनाना होगा।

<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
यह एंड्रॉइड 7.0 पर काम करता था, लेकिन इसके परिणामस्वरूप मेरे सोनी एक्सपीरिया एम पर एंड्रॉइड 4.1.2 चल रहा था।
सैम

@Sam रिपोर्टिंग के लिए धन्यवाद! यदि आप 4Dp से 48dp तक के पहले फ्रेमलैट की ऊंचाई को बदलते हैं तो आप क्या देखते हैं?
Juozas Kontvainis

प्रगति पट्टी दिखाई देती है, लेकिन इसके नीचे बहुत अधिक पैडिंग है और इसके ऊपर एक छोटा सा पैडिंग है।
सैम

@Sam मैंने अपना उत्तर अपडेट कर दिया है, उम्मीद है कि यह आपके Sony डिवाइस पर स्वीकार्य रूप से काम करेगा। यदि यह मदद नहीं करता है, तो मैं आपके एप्लिकेशन थीम कॉन्फ़िगरेशन की समीक्षा करने का सुझाव देता हूं। किटकैट पर होलो थीम का उपयोग करके इसे ठीक करना चाहिए।
जूजोस कंटोवैनिस

15

की लंबवत गद्दी को हटाने के लिए ProgressBar, आप कर सकते हैं

  • की ऊंचाई तय करें ProgressBar
  • स्केल = "मान" (मान = ऊंचाई / 4) का उपयोग करें (4 प्रगति पट्टी की डिफ़ॉल्ट ऊंचाई है)

उदाहरण में 1 wra_content ProgressBar, 1 8dp ProgressBar, 1 100dp शामिल हैProgressBar

यहाँ छवि विवरण दर्ज करें

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

14

इस समस्या का पूर्ण समाधान निम्नानुसार होगा। बस अगर किसी को कोड के टुकड़े चाहिए होते हैं, तो यही मैंने किया।

  1. सभी 8 अनिश्चित क्षैतिज प्रगति पट्टी के ड्राफ़्ट को कॉपी किया गया
  2. कुछ छवि मैनिपुलेटर का उपयोग करके ड्राअब का संपादन किया और अनावश्यक पैडिंग को हटा दिया
  3. एंड्रॉइड प्लेटफॉर्म से प्रोग्रेसिव XML नामक प्रोग्रेस_इंडिटर्मिनेट_होरलॉज_होल्कोम को कॉपी किया
  4. शैली विजेट को कॉपी किया गया। ProgressBar। क्षैतिज और उसके माता-पिता
  5. लेआउट में मैन्युअल रूप से शैली और min_height सेट करें

यहां प्रगति_indeterminate_horiolet_holo.xml है

<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>

और अंत में, मेरे स्थानीय लेआउट फ़ाइल में न्यूनतम ऊंचाई 4dp पर सेट करें।

<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
क्या यह आश्चर्यजनक नहीं है कि इस तरह के सामान्य ज्ञान के व्यवहार को प्राप्त करने के लिए आपको कितना काम करना है जो कि बस एंड्रॉइड में डिफ़ॉल्ट रूप से आना चाहिए?
SpaceMonkey

1
और सामग्री डिजाइन के लिए?
म्रतुरोबट

@ मुझे नहीं लगता कि भौतिक दिशानिर्देशों में समान प्रगति-प्रक्रिया है। कृपया इस दस्तावेज़ को देखें: google.com/design/spec/compenders/…
Subin सेबेस्टियन

10

मैं क्षैतिज शैली के साथ प्रगतिबार का उपयोग करते समय एक ही समस्या से मिला।

मूल कारण यह है कि प्रगति पट्टी के लिए डिफ़ॉल्ट 9-पैच ड्रॉबल: (प्रगति_बग_होलो_डार्क.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"/>

यह शायद सबसे अच्छा समाधान है। आपके उदाहरण कोड ने मेरे सोनी एक्सपीरिया एम पर एंड्रॉइड 4.1.2 चलाने पर कोई प्रगति बार नहीं बनाया है।
सैम

8

एक तरकीब यह है कि अपने प्रगति बार में नकारात्मक मार्जिन जोड़ें।

नीचे XML कोड का एक उदाहरण है, यह मानते हुए कि यह आपकी स्क्रीन के ऊपर है:

<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" />

कोड का परिणाम


नकारात्मक मार्जिन को जोड़ने से मेरे लिए समस्या हल हो गई। धन्यवाद!
23क्रोवेट्रल

5

सुबिन का जवाब केवल एक ही (वर्तमान में) लगता है कि भविष्य में एंड्रॉइड प्रोल्यूसर के रिलीज में टूटने के लिए एक नाजुक हैक विषय नहीं है।

लेकिन संसाधनों को तोड़ने, उन्हें संशोधित करने और अनिश्चित काल तक बनाए रखने की परेशानी से गुजरने के बजाय, मैंने MaterialProgressBar लाइब्रेरी का उपयोग करने का विकल्प चुना है , जो हमारे लिए ऐसा करती है:

<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"
/>

बिल्ड.ग्रेड में:

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

उस परियोजना में एक अच्छा डेमो है जो इसके और अंतर्निहित ProgressBar के बीच के अंतर को दर्शाता है।


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

मैं minHeight और maxHeigh का उपयोग करता हूं। यह विभिन्न Api संस्करणों के लिए मदद करता है।

<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" />

इसे दोनों का उपयोग करने की आवश्यकता है। Api 23 के साथ अच्छा काम करता है

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

लेकिन कम Api संस्करण उस मामले में प्रगति ऊंचाई को अधिकतम ऊंचाई तक बढ़ाते हैं।


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 के अंदर इस तरह का प्रयोग करें

 <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

एंड्रॉइड को जोड़ना: ड्रॉबल में परिभाषित परत-सूची में प्रगति करना मेरे लिए समस्या को निर्धारित करता है। यह कस्टम ड्रॉबल में प्रोजेस बार को मास्क करके काम करता है

उदाहरण कार्यान्वयन 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.materialprogressbar.MaterialProgressBar
Anthony

1

किसी भी नए मॉड्यूल को डाउनलोड करने या यहां तक ​​कि अपने प्रगति पट्टी के आसपास एक फ्रेम-आउट लगाने के लिए आवश्यक नहीं है। ये सब सिर्फ हैक हैं। केवल 2 चरण:

जो भी अपने। Xml में

<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>

आम तौर पर, ये उन चीजों के कोड को बदलने के लिए कदम हैं जिन्हें आप पसंद नहीं करते हैं। बस स्रोत कोड ढूंढें और पता करें कि क्या बदलना है। यदि आप ProgressBar स्रोत कोड का पालन करते हैं, तो आपको एक फ़ाइल मिलेगी, जिसे कहा जाता है progress_horiolet.xml जो इसे संदर्भित करता है। मूल रूप से मैं अपनी सभी XML समस्याओं को कैसे हल करता हूं।


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, दो के Viewsअंदर फकिंग है LinearLayout। यह वही है जिसके साथ मैं समाप्त हुआ। बहुत साफ दिखता है और यह दृष्टिकोण काफी लचीला है - आप इसे कायरतापूर्ण तरीकों से चेतन कर सकते हैं, पाठ जोड़ सकते हैं आदि।

लेआउट:

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

कोई वर्कअराउंड और आकर्षण की तरह काम नहीं करता है।


काम नहीं किया, क्या आप कृपया बता सकते हैं कि यह क्यों काम करना चाहिए?
विनम्र_वुल्फ

जब मैंने उत्तर लिखा तो @humble_wolf ने अपने पिछले प्रोजेक्ट में मेरे लिए काम किया; पुस्तकालय के कुछ विशेष संस्करण पर निर्भर हो सकता है? यह काम करना चाहिए क्योंकि कारण है कि प्रगति पट्टी के लिए चीज़ की तरह एक पैडिंग है वास्तविक पैडिंग नहीं है, लेकिन minHeightयह 0 से बड़ा है (32dp शायद कहें) पूर्वनिर्धारित। इस संपत्ति को बदलने से आपको एक अलग रूप मिलता है।
एलेक्स फैन

Inderminate = सही मोड में मेरे लिए काम नहीं किया, शायद नियत मोड में काम कर रहा था। यदि आप वास्तव में चाहते हैं कि यह उत्तर हो तो कृपया सभी शर्तों के साथ उत्तर में स्पष्टीकरण लिखें।
नम्र_वुल्फ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.