রৈখিক বিন্যাসের কেবল একদিকে সীমানা কীভাবে আঁকবেন?


185

আমি একটি রৈখিক বিন্যাসে সীমানা আঁকতে সক্ষম, তবে এটি চারদিকেই আঁকছে। আপনি এটি সিএসএসের মতোই কেবল ডানদিকে সীমাবদ্ধ রাখতে চাই (সীমান্ত-ডান: 1px কঠিন লাল;)।

আমি এটি চেষ্টা করেছি, তবে এটি এখনও সর্বত্র আঁকছে:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <shape android:shape="rectangle" >
        <stroke
            android:height="2dp"
            android:width="2dp"
            android:color="#FF0000" />

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

        <padding
            android:bottom="0dp"
            android:left="0dp"
            android:right="1dp"
            android:top="0dp" />

        <corners
            android:bottomLeftRadius="0dp"
            android:bottomRightRadius="5dp"
            android:radius="1dp"
            android:topLeftRadius="5dp"
            android:topRightRadius="0dp" />
    </shape>
</item>

এটি কীভাবে সম্পাদন করা যায় তার কোনও পরামর্শ?

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


আপনি আপনার বিন্যাসে অঙ্কনযোগ্য
লেফট

উত্তর:


358

আপনি একদিকে সীমানা পেতে এটি ব্যবহার করতে পারেন

<?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="#FF0000" />
    </shape>
</item>
<item android:left="5dp">
    <shape android:shape="rectangle">
        <solid android:color="#000000" />
    </shape>
</item>
</layer-list>

সম্পাদিত

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

সম্পূর্ণ উত্সের জন্য আমার গিথুব দেখুন ।


5
আপনি যদি নীচের সীমানা সহ একটি শক্ত আলফা ভিত্তিক রঙ চান? অ্যান্ড্রয়েড ড্রয়যোগ্য এক্সএমএল এপি সহ আমি এর একটি সমাধান নিয়ে ভাবছিলাম তবে আমি এটি বের করতে পারি না।
মারিও লেনসি

এটি আমার পক্ষে কাজ করে না - আমি বোর্ডারদের জন্য ধূসর গ্রেডিয়েন্ট দিয়ে ওভারলেড করে ধীরে ধীরে আমি ভিতরে ভিতরে আরও গা dark় রঙ চেয়েছিলাম তার বিপরীতটি ঘটায়। আইটেমটিতে অঙ্কনযোগ্য লেফট হিসাবে রাখার জন্য একটি নির্দিষ্ট আকারে একটি আয়তক্ষেত্রটি অঙ্কনযোগ্য তৈরি করার বিষয়ে চিন্তাভাবনা করা হয়েছিল। এটি প্রবাহিত বলে মনে হয় না।
jbenowitz

@jbenowitz: স্তর-তালিকার আইটেমের ক্রম আরও গুরুত্বপূর্ণ। যদি আপনি বিপরীত হন তবে আপনি সেই ফলাফলগুলি পাবেন।
বিবেক খানদেলওয়াল

আমি স্ট্রোকের সীমানার রঙ এবং বোতামের রঙের বাকি আকারটি যুক্ত করে এটি ঠিক করেছি। কৌতুকটি করেছে।
jbenowitz

242

পাই হিসাবে সহজ, স্বচ্ছ বিজি অনুমোদন:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="0"
        android:startColor="#f00"
        android:centerColor="@android:color/transparent"
        android:centerX="0.01" />
</shape>

সীমানার অবস্থান পরিবর্তন করতে কোণ পরিবর্তন করুন:

  • 0 = বাম
  • 90 = নীচে
  • 180 = ডান
  • 270 = শীর্ষে

19
এটি
এখানের

11
চমৎকার, তবে আমি অবশ্যই এটি "পাই হিসাবে সহজ" হিসাবে বর্ণনা করব না।
ফানকিব্রো

7
আপনার যদি ঘন সীমানার প্রয়োজন হয় বা একাধিক দিকের সীমানা প্রয়োজন হয় তবে এটি কাজ করে না।
হলোগ্রাফিক-নীতি

1
@ কোডডম্যান - এটি আপনার দৃষ্টির পটভূমি হিসাবে ব্যবহার করুন, তবে এটি এর উচ্চতার উত্তরাধিকারী হবে।
ওডেড ব্রেইনার

2
স্ট্রোক বা সীমানা প্রস্থ সামঞ্জস্য কিভাবে?
রতুরাজ পাতিল

101

আপনি একক স্তর ব্যবহার করে যা চান তা প্রয়োগ করাও সম্ভব

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

    <item
        android:bottom="-5dp"
        android:right="-5dp"
        android:top="-5dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/color_of_the_background" />

            <stroke
                android:width="5dp"
                android:color="@color/color_of_the_border" />
        </shape>
    </item>

</layer-list>

এই ভাবে শুধুমাত্র বাম সীমানা দৃশ্যমান কিন্তু আপনার সাথে খেলে কোনো সমন্বয় যদি আপনি চান অর্জন করতে পারেন bottom, left, rightএবং topগুণাবলীর itemউপাদান


3
আপনার অন্যান্য পটভূমির রঙ থাকলে এটি অবশ্যই কার্যকর হয় এবং আপনি এই অঙ্কনযোগ্য বিজিটি সীমানার সাথে ওভারলে করতে চান। (y)
অং পিয়া

3
ঠিক আমার যা প্রয়োজন, তবে নেতিবাচক প্যাডিংগুলি ব্যবহার করা কি ঠিক?
ইলিয়াআরমিন

1
এটিই সেরা সমাধান। আমি -5 ডিপি সেখানে কি করে তা বিরক্ত করছি।
অমিত কুমার

1
নেতিবাচক প্যাডিং এইচটিএমএল / সিএসএসে সাধারণ। এটি কেবল জিনিসগুলিকে অন্য দিকটিতে ঠেলে দেয়। আমার অভিজ্ঞতার সাথে এটি অ্যান্ড্রয়েডেও পুরোপুরি বৈধ বলে মনে হচ্ছে।
spaaarky21

নেতিবাচক মার্জিন ব্যবহার করে বাস্তবায়নগুলি যদি আপনার লেআউটটিতে ক্লিপচিল্ডেন = মিথ্যা বা ক্লিপটোপ্যাডিং = মিথ্যা থাকে তবে ভাল কাজ করে না। যদি এটি হয় তবে আপনি দুটি বিস্তৃত আয়তক্ষেত্রগুলি দিয়ে সমাধানটি ব্যবহার করতে পারেন, যেমন বিবেক খান্দেলওয়ালের প্রস্তাবিত
জেসিস বারেরার

79

অঙ্কনযোগ্য মাত্র এক পাশের সীমানা পেতে, insetঅন্য 3 টি ক্ষেত্রে নেতিবাচক প্রয়োগ করুন (এই সীমানাগুলি অফ-স্ক্রিনে আঁকায়)।

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetTop="-2dp" 
    android:insetBottom="-2dp"
    android:insetLeft="-2dp">

    <shape android:shape="rectangle">
        <stroke android:width="2dp" android:color="#FF0000" />
        <solid android:color="#000000" />
    </shape>

</inset>

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

এই পদ্ধতির নায়কের উত্তরের অনুরূপ, তবে এ ব্যবহার না করে layer-list


4
এটি সেরা উত্তর আইএমও
জেমস

খুব ভাল উত্তর, আমার কেবল প্রস্থ পরিবর্তন করতে হবে এবং 10dp তে ইনসেট করা দরকার :) এবং আরও, আমার বাম দিকে সীমানা দরকার, তাই আমি অ্যান্ড্রয়েড পরিবর্তন করি: ইনসেটলাইফ্ট অ্যান্ড্রয়েডে: ইনসেটরাইট। খুবই সোজা! ম্যাটেরিয়াল বোতামটি ক্লিক করে রাখুন: ডি
ফুং

ঠিক আমার কী প্রয়োজন, insertXকী সীমানা প্রদর্শন করতে হবে এবং কী না তা সিদ্ধান্ত নিতে শীর্ষে পরিবর্তন করুন ।
কুলারবাইটস

আমার কাছে এমনকি @ নুলের একটি শক্ত রঙ থাকতে পারে এবং তারপরে এই পদ্ধতিটির ফলে কোনও ওভারড্রোল হয় না। জিনিয়াস। ধন্যবাদ!
অজানাবার্ডো

2
মনোযোগ দিন: এটি আপনার দর্শন সামগ্রীর স্থান পরিবর্তন করবে এবং এটিকে পুনরায় আকার দেবে। যত্ন সহকারে ব্যবহার করুন।
ভাওয়োস্ট ইস্ট

7

বিকল্প হিসাবে (আপনি পটভূমি ব্যবহার করতে না চান), আপনি সহজেই নীচের মতামত তৈরি করে এটি করতে পারেন:

<View
    android:layout_width="2dp"
    android:layout_height="match_parent"
    android:background="#000000" />

শুধুমাত্র একটি ডান সীমানা থাকার জন্য, এটি বিন্যাসের পরে রাখুন (যেখানে আপনি সীমান্ত রাখতে চান):

<View
    android:layout_width="2dp"
    android:layout_height="match_parent"
    android:background="#000000" />

কেবল বাম সীমানা থাকার জন্য, এটি বিন্যাসের আগে রাখুন (যেখানে আপনি সীমান্ত রাখতে চান):

আমার জন্য কাজ করেছেন ... আশা করি এর কিছুটা সহায়তা হবে ....


6

আমি নিম্নলিখিত কোডটি দিয়ে এফেক্টটি অর্জন করতে সক্ষম হয়েছি

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

স্থানচ্যুতির দিক পরিবর্তন করে আপনি সীমান্ত অবস্থার জন্য আপনার প্রয়োজনীয়তার সাথে সামঞ্জস্য করতে পারেন


5
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#f28b24" />
            <stroke
                android:width="1dp"
                android:color="#f28b24" />
            <corners
                android:radius="0dp"/>
            <padding
                android:left="0dp"
                android:top="0dp"
                android:right="0dp"
                android:bottom="0dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:startColor="#f28b24"
                android:endColor="#f28b24"
                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="#f28b24" />
            <corners
                android:bottomLeftRadius="8dp"
                android:bottomRightRadius="0dp"
                android:topLeftRadius="0dp"
                android:topRightRadius="0dp"/>
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>

5

অন্য একটি দুর্দান্ত উদাহরণ উদাহরণ

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<inset xmlns:android="http://schemas.android.com/apk/res/android"
     android:insetRight="-2dp">

     <shape android:shape="rectangle">
         <corners
             android:bottomLeftRadius="4dp"
             android:bottomRightRadius="0dp"
             android:topLeftRadius="4dp"
             android:topRightRadius="0dp" />
         <stroke
             android:width="1dp"
             android:color="@color/nasty_green" />
         <solid android:color="@android:color/transparent" />
     </shape>

</inset>

2

এখানে নয়-প্যাচ ফাইল সম্পর্কে কোনও উল্লেখ নেই। হ্যাঁ, আপনাকে ফাইলটি তৈরি করতে হবে, তবে এটি বেশ সহজ কাজ এবং এটি সত্যই " ক্রস-সংস্করণ এবং স্বচ্ছতা সমর্থনকারী " সমাধান। যদি ফাইলটি drawable-nodpiডিরেক্টরিতে স্থাপন করা হয় তবে এটি pxভিত্তিক কাজ করে এবং drawable-mdpiপ্রায় ডিপি বেস হিসাবে কাজ করে (পুনরায় নমুনার জন্য ধন্যবাদ)।

মূল প্রশ্নের উদাহরণ ফাইল ( সীমানা-ডান: 1px কঠিন লাল; ) এখানে রয়েছে:

http://ge.tt/517ZIFC2/v/3?c

এটি কেবল drawable-nodpiডিরেক্টরিতে রাখুন।


1

বিভিন্ন রঙের সীমানা। আমি 3 টি আইটেম ব্যবহার করেছি।

<?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="@color/colorAccent" />
        </shape>
    </item>
    <item android:top="3dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/light_grey" />
        </shape>
    </item>
    <item
        android:bottom="1dp"
        android:left="1dp"
        android:right="1dp"
        android:top="3dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorPrimary" />
        </shape>
    </item>
</layer-list>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.