অ্যান্ড্রয়েডে শৈল নীচে লাইন


120

আমাকে একটি অ্যান্ড্রয়েড আকার তৈরি করতে হবে যাতে কেবল নীচে স্ট্রোক হয় (ড্যাশযুক্ত লাইন)। আমি যখন নিম্নলিখিতটি চেষ্টা করি তখন স্ট্রোকটি কেন্দ্রের মধ্য দিয়ে আকৃতিটিকে দ্বিখণ্ডিত করে। কেউ কীভাবে এটি সঠিকভাবে পেতে জানেন? স্ট্রোকটি নীচের লাইন / সীমানা হওয়া দরকার। আমি টেক্সটভিউয়ের ব্যাকগ্রাউন্ড হিসাবে আকারটি ব্যবহার করছি। দয়া করে, আমার কেন দরকার তা মনে করবেন না।

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#1bd4f6" />
        </shape>
    </item>

    <item>
        <shape android:shape="line" >
            <padding android:bottom="1dp" />

            <stroke
                android:dashGap="10px"
                android:dashWidth="10px"
                android:width="1dp"
                android:color="#ababb2" />
        </shape>
    </item>

</layer-list>

2
আমি কেন আপনার গিট প্রকল্পটি এত সাধারণ কোনও জিনিসের জন্য দেখতে যাব? আপনি কি এই প্রকল্পের জন্য হিট খুঁজছেন?
কোট মৌনিও

কৌতূহলের বাইরে, আপনি ড্যাশ আকারগুলি নির্দিষ্ট করতে পিক্স ব্যবহার করছেন কেন?
জোসে_জিডি

উত্তর:


313

এটি হ্যাকের মতো, তবে আমি মনে করি এটি সম্ভবত এটি করার সেরা উপায়। ড্যাশড লাইনটি উচ্চতা নির্বিশেষে সর্বদা নীচে থাকবে।

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

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#1bd4f6" />
        </shape>
    </item>

    <item android:top="-2dp" android:right="-2dp" android:left="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:dashGap="10px"
                android:dashWidth="10px"
                android:width="1dp"
                android:color="#ababb2" />
        </shape>
    </item>

</layer-list>

ব্যাখ্যা:

দ্বিতীয় আকারটি ড্যাশযুক্ত রূপরেখার সাথে স্বচ্ছ আয়তক্ষেত্র। সীমানা তৈরির মূলটি কেবল নীচে বরাবর উপস্থিত হওয়া negativeণাত্মক মার্জিনের অন্যদিকে সেট করে। এই নেতিবাচক মার্জিনগুলি sides দিকগুলিতে টানা অঞ্চলটির বাইরে ড্যাশযুক্ত রেখাটিকে "ধাক্কা" দেয়, নীচের অংশে কেবল রেখাটি রেখে। একটি সম্ভাব্য পার্শ্ব-প্রতিক্রিয়া (যা আমি চেষ্টা করিনি) হ'ল, তাদের নিজস্ব সীমার বাইরে আঁকা মতামতের জন্য, নেতিবাচক-মার্জিন সীমানা দৃশ্যমান হতে পারে।


5
চতুর প্রকৃতপক্ষে। আমাকে বুঝতে কিছুটা সময় নিয়েছে যে এই কাজটি কী করে তোলে উপরের, ডান এবং বাম এবং স্ট্রোক প্রস্থের মধ্যে 1 ডিপি (নিখুঁত মান) এর পার্থক্য :)
জোসে_জিডি

5
এটি নিখুঁতভাবে কাজ করে, তবে কেউ দয়া করে এর মধ্যে গণিতের ব্যাখ্যা দিয়ে উত্তরটির পরিপূরক করতে পারেন (আমার মতো দরিদ্র আত্মার জন্য এবং আগত দিনগুলিতে এখানে আগত অন্য যে কেউ) :)
সোর্স.রার

দুর্দান্ত কাজ করে। এবং আপনি এমন কোনও নির্বাচকও ব্যবহার করতে পারেন যা স্থিতির উপর নির্ভর করে স্তর-তালিকা xmls দেখায়। আমি এটি এক খুঁজে বের করতে হয়েছিল এবং এটি খুব কার্যকর হয়।
ডেকার 21

অপ্রয়োজনীয় ওভারড্রের প্রবর্তন করবেন না। আমি মনে করি @ অ্যাননানের সমাধানটি আরও ভাল। এটি আপনার প্রয়োজন অনুসারে পরিবর্তন করার চেষ্টা করুন।
ভ্লাদ

44

এটি কৌশলটি করে ...

<item >
    <shape android:shape="rectangle">
        <solid android:color="#YOUR_BOTTOM_LINE_COLOR"/>
    </shape>
</item>

<item android:bottom="1.5dp">
    <shape android:shape="rectangle">
        <solid android:color="#YOUR_BG_COLOR"/>
    </shape>
</item>

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

3
উত্তম উত্তর তবে অপ্রয়োজনীয় ওভারড্রের সাথে
লেস্টার

এবং যখন আপনার
ডার্ক

43
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:top="-6dp"
        android:left="-6dp"
        android:right="-6dp"
        android:bottom="0dp">

        <shape android:shape="rectangle">
            <solid android:color="#88FFFF00"/>
            <stroke
                android:width="5dp"
                android:color="#FF000000"/>
        </shape>
    </item>
</layer-list>

আমার জন্য নিখুঁতভাবে কাজ করেছেন! ধন্যবাদ।
হেটসগন্ধি

19

এই উত্তরটি সেই গুগল অনুসন্ধানকারীদের জন্য যারা EditTextএখানে পছন্দ মতো বিন্দুযুক্ত নীচের অংশটি দেখাতে চান

নমুনা

ফোল্ডারের dotted.xmlভিতরে তৈরি করুন drawableএবং এগুলি আটকান

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="1dp"
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape android:shape="rectangle">
            <stroke
                android:width="0.5dp"
                android:color="@android:color/black" />    
            <solid android:color="#ffffff" />
            <stroke
                android:width="1dp"
                android:color="#030310"
                android:dashGap="5dp"
                android:dashWidth="5dp" />
            <padding
                android:bottom="5dp"
                android:left="5dp"
                android:right="5dp"
                android:top="5dp" />
        </shape>
    </item>
</layer-list>

তারপরে কেবলমাত্র সবে তৈরি করা android:backgroundহয়েছে এমন বৈশিষ্ট্যটি কেবল সেট করুন dotted.xml। আপনার EditTextচেহারা এই মত।

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Some Text"
    android:background="@drawable/dotted" />

13

আমি মনে করি এটি সমস্ত নেতিবাচক প্যাডিংস বা স্টর্কস ছাড়াই সোজা is

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

    <item android:drawable="@color/main_bg_color"/>
    <item android:gravity="bottom">
        <shape android:shape="rectangle">
            <size android:height="5dp"/>
            <solid android:color="@color/bottom_bar_color"/>
        </shape>
    </item>
</layer-list>

2
আপনার যদি কোনও বিশেষ ব্যাকগ্রাউন্ডের প্রয়োজন না হয়, আপনি <item android:drawable="@color/main_bg_color"/>
ওভারক্লোভার

1
অ্যান্ড্রয়েড 27 এর সাথে কাজ করে, অ্যান্ড্রয়েড 19 এর সাথে কাজ করে না ... অন্যান্য সংস্করণ পরীক্ষা করে নি।
রিডকুলি

10

পরবর্তী এক্সএমএল অঙ্কনযোগ্য কোড ব্যবহার করে দেখুন:

    <layer-list>
        <item android:top="-2dp" android:right="-2dp" android:left="-2dp">
            <shape>
                <solid android:color="@android:color/transparent" />
                <stroke
                    android:width="1dp"
                    android:color="#fff" />
            </shape>
        </item>
    </layer-list>

7

আমি মনে করি আপনাকে বুঝতে পারলে আপনাকে আকৃতি ব্যবহার করার দরকার নেই।

আপনি যদি নীচের চিত্রটিতে প্রদর্শিত হিসাবে সন্ধান করছেন তবে নিম্নলিখিত লেআউটটি ব্যবহার করুন।

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:background="#1bd4f6"
    android:paddingBottom="4dp" >

    <TextView
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:background="#ababb2"
        android:padding="5dp"
        android:text="Hello Android" />
 </RelativeLayout>

 </RelativeLayout>

সম্পাদনা

এই বৈশিষ্ট্যগুলির সাথে খেলে আপনি ফলাফল পাবেন

    android:top="dimension"
    android:right="dimension"
    android:bottom="dimension"
    android:left="dimension"

এই মত চেষ্টা করুন

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item>
    <shape android:shape="rectangle" >
        <solid android:color="#1bd4f6" />
    </shape>
</item>

<item android:top="20px"
    android:left="0px">
    <shape android:shape="line"  >
        <padding android:bottom="1dp" />

        <stroke
            android:dashGap="10px"
            android:dashWidth="10px"
            android:width="1dp"
            android:color="#ababb2" />
    </shape>
</item>

</layer-list>

আমার স্ট্রোকটি একটি
ড্যাশযুক্ত

এটি কাজ করে, একমাত্র
সতর্কতামূলক

অপ্রয়োজনীয় ওভারড্র চালু না করা আপনার সর্বদা সতর্ক হওয়া উচিত।
ভ্লাদ

5

একটি সহজ সমাধান:

অঙ্কনযোগ্য ফোল্ডারে edittext_stroke.xML হিসাবে একটি অঙ্কনযোগ্য ফাইল তৈরি করুন । নীচের কোড যুক্ত করুন:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line"
   >
    <stroke
        android:width="1dp"
        android:color="@android:color/white" >
    </stroke>
</shape>

বিন্যাস ফাইলে, সম্পাদনাযোগ্য হিসাবে অঙ্কনযোগ্য যুক্ত করুন

অ্যান্ড্রয়েড drawableBottom = "@ অঙ্কনযোগ্য / edittext_stroke"

<EditText
      android:textColor="@android:color/white"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:drawableBottom="@drawable/edittext_stroke"
      />

এক্ষেত্রে আপনার লাইনটি নীচে নয়, কেন্দ্রে থাকবে
শ্যাভিটোস্লাভ জাইতসেভ

4

সাধারণত অনুরূপ কাজের জন্য - আমি লেয়ার-লিস্টের মতো এটির মতো আঁকতে সক্ষম তৈরি করেছি:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
        <solid android:color="@color/underlineColor"/>
        </shape>
    </item>
<item android:bottom="3dp">
    <shape android:shape="rectangle">
        <solid android:color="@color/buttonColor"/>
    </shape>
</item>

ধারণাটি হ'ল প্রথমে আপনি আন্ডারলাইন রঙের সাথে আয়তক্ষেত্রটি আঁকুন এবং তারপরে এটির উপরে আপনি আসল বোতামের রঙের সাথে আরেকটি আয়তক্ষেত্র আঁকুন তবে নীচেপ্যাডিং প্রয়োগ করছেন। এটা সবসময় কাজ করে।

তবে আমার যখন স্বচ্ছ হতে বোতামের রঙ প্রয়োজন তখন আমি উপরের অঙ্কনীয় ব্যবহার করতে পারি না। আমি আরও একটি সমাধান খুঁজে পেয়েছি

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="@android:color/transparent"/>
    </shape>
</item>

<item android:drawable="@drawable/white_box" android:gravity="bottom"     android:height="2dp"/>
</layer-list>

(আপনি এখানে দেখতে পাচ্ছেন যে মূল বোতাম কালার স্বচ্ছ এবং সাদা_বক্স সাদা সলিড সহ কেবল একটি সাধারণ আয়তক্ষেত্র আঁকতে পারে)


2

এই এক্সএমএলটি আপনার পছন্দ অনুসারে রঙ পরিবর্তন করুন।

<item>
    <layer-list>
        <item>
            <shape>
                <solid android:color="@color/gray_500" />

            </shape>
        </item>
        <!-- CONTENT LAYER -->
        <item android:bottom="2dp" >
            <shape>
                <solid android:color="#ffffff" />
            </shape>
        </item>
    </layer-list>
</item>

আপনি যদি প্রোগ্রামগতভাবে চান তবে ক্ষেত্রে

public static Drawable getStorkLineDrawable(@ColorInt int colorStrok, int    iSize, int left, int top, int right, int bottom)

{
    GradientDrawable gradientDrawable = new GradientDrawable();
    gradientDrawable.setShape(GradientDrawable.RECTANGLE);
    gradientDrawable.setStroke(iSize, colorStrok);
    LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{gradientDrawable});
    layerDrawable.setLayerInset(0, left, top, right, bottom);
    return layerDrawable;
}

এই পদ্ধতি কল করুন

  Drawable yourLineDrawable=  getStorkLineDrawable(yourColor, iSize, -iSize, -iSize, -iSize, 0);

2

এটি আমার পক্ষে সবচেয়ে ভাল কাজ করেছে:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="-5dp" android:left="-5dp" android:right="-5dp" android:bottom="0dp">
        <shape android:shape="rectangle">
            <stroke android:width="4dp" android:color="#ff0000"/>
        </shape>
    </item>
</layer-list>

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


2

এটি করার সহজতম উপায়টি যেখানে আপনি নীচের অংশটি চান তা দেখার পরে রাখে

    <?xml version="1.0" encoding="utf-8"?>
    <View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@color/colorPrimary" />

0

এটি স্বচ্ছ ব্যাকগ্রাউন্ড সহ সম্পূর্ণ স্বচ্ছ এডিটেক্সট।

<item>
    <shape android:shape="rectangle" >
        <solid android:color="@color/transparent" />
    </shape>
</item>

<item android:top="-3dp" android:right="-3dp" android:left="-3dp">
    <shape>
        <solid android:color="@android:color/transparent" />
        <stroke

            android:width="2dp"
            android:color="@color/bottomline" />
    </shape>
</item>


0

একটি সহজ সমাধান :

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="-1dp"
        android:left="-1dp"
        android:right="-1dp"
        android:top="-1dp">

        <shape android:shape="rectangle">

            <solid android:color="#AARRGGBB" />

            <stroke
                android:width="5dp"
                android:color="@android:color/red"
                android:dashWidth="10dp"
                android:dashGap="12dp" />

        </shape>
    </item>
</layer-list>

এবং অবশেষে আমাদের এমন কিছু রয়েছে :)

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

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