উন্মুক্ত অ্যান্ড্রয়েড স্ট্রোক?


95

কেবলমাত্র নির্দিষ্ট কিছু ক্ষেত্রে স্ট্রোক সহ একটি অ্যান্ড্রয়েড শেপ অবজেক্ট তৈরি করা সম্ভব?

যেমন আমার আছে:

<stroke 
 android:width="3dip" 
 android:color="#000000"
    android:dashWidth="10dip" 
    android:dashGap="6dip" />

যা এই সিএসএসের অনুরূপ:

border: 3px dashed black;

আমি কীভাবে কেবল একদিকে স্ট্রোক সেট করতে পারি? এইভাবে আমি সিএসএসে এটি করব:

border-left: 3px dashed black;

অ্যান্ড্রয়েড এক্সএমএল এ আপনি কীভাবে করবেন?

উত্তর:


127

আমি এটির সাথে একটি ভাল সমাধান অর্জন করেছি:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
    <item android:top="-1dp" android:right="-1dp" android:left="-1dp">
      <shape>
            <solid android:color="@android:color/transparent" />
            <stroke android:width="1dp" android:color="#ffffff" />
      </shape>
    </item>

</layer-list>

আপনার স্বচ্ছ পটভূমি প্রয়োজন তবে এটি একটি ওপেন স্ট্রোক রঙের ক্ষেত্রে ভাল কাজ করে (আমার ক্ষেত্রে আমার কেবল নীচের লাইনের প্রয়োজন ছিল)। আপনার যদি পটভূমির রঙের প্রয়োজন হয় তবে আপনি ম্যারাগুজের উত্তরের মতো শক্ত আকারের রঙ যুক্ত করতে পারেন।

সম্পাদনা 1

কখনও কখনও, উচ্চ ঘনত্ব ডিভাইসের জন্য, নিম্ন ডিপ মান ব্যবহার করা খুব পাতলা বা অদৃশ্য স্ট্রোক বা দূরত্বের মধ্যে শেষ হতে পারে। তালিকাভিউ ডিভাইডার সেট করার সময় এটি আপনার ক্ষেত্রেও ঘটতে পারে।

সবচেয়ে সহজ কাজটি হ'ল 1 ডিপি পরিবর্তে 1px এর দূরত্ব ব্যবহার করা। এটি লাইনটি সব ঘনত্বে সর্বদা দৃশ্যমান করে তুলবে। সর্বোত্তম সমাধান হ'ল প্রতিটি ঘনত্বের জন্য মাত্রা সংস্থান তৈরি করা, প্রতিটি ডিভাইসের জন্য সেরা আকার পাওয়া get

সম্পাদনা 2

মজা, কিন্তু আমি এটি 6 বছর পরে ব্যবহার করার চেষ্টা করেছি এবং ললিপপ ডিভাইসে আমি ভাল ফলাফল পেতে পারি না।

সম্ভবত বর্তমান সমাধান 9-প্যাচ ব্যবহার করা হয়। অ্যানড্রয়েডের এতক্ষণ পরে এই সমস্যার সহজ সমাধান করা উচিত ছিল।


এটি আমার পক্ষেও কাজ করেছিল, তবে কেন -1 ডিপি পরিবর্তে আমাকে -2 ডিপি ব্যবহার করতে হয়েছিল তা ঠিক জানি না। আমি যদি পরবর্তীটি ব্যবহার করি তবে আমি এখনও একটি পাতলা রেখা দেখতে পেতাম।
এডু জামোরা

4
@ এডুজামোরা হ্যাঁ মনে হচ্ছে উচ্চ ঘনত্বের ডিভাইসগুলির জন্য -1dp আশানুরূপভাবে কাজ করে না
এইচটিফোয়ায়

আমি সমস্ত পক্ষের জন্য সীমানাও পাচ্ছি, তবে কেবল নীচের সীমানা নয়।
চেওক ইয়ান চেং

@ ইয়ানচেংচিয়োক 1 ডিপি এর পরিবর্তে 1 পিক্স দিয়ে চেষ্টা করুন।
htafoya

@ htafoya এটি একটি উজ্জ্বল সমাধান। ধন্যবাদ!
অরিগ্রাগস

53

আমি জানি এই প্রশ্নটি অনেক আগে পোস্ট করা হয়েছিল, সুতরাং উত্তরটি যে ব্যক্তি এই প্রশ্ন পোস্ট করেছেন তার দ্বারা ব্যবহৃত হবে না, তবে এটি এখনও অন্যকে সাহায্য করতে পারে।

 <?xml version="1.0" encoding="UTF-8"?>
    <!-- inset is used to remove border from top, it can remove border from any other side-->
    <inset xmlns:android="http://schemas.android.com/apk/res/android"
        android:insetTop="-2dp"
        >
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rectangle">
        <stroke android:width="1dp" android:color="#b7b7b7" />
        <corners android:bottomRightRadius="5dp"  android:bottomLeftRadius="5dp"/>

        <solid android:color="#454444"/>
    </shape>
    </inset>

insetট্যাগটি ব্যবহার করুন এবং আপনি যে পাশের সীমাটি সরাতে চান তার জন্য নেতিবাচক মান দিন।

সম্ভাব্য মানগুলি হ'ল:

android:insetTop="-1dp" android:insetBottom="-1dp" android:insetLeft="-1dp" android:insetRight="-1dp"


হ্যাঁ এবং আমি যা করেছি তা করবেন না এবং চেষ্টা করুন এবং বাকি উত্তরটি না পড়েই ইনসেট অ্যাটরকে স্ট্রোক ট্যাগে রাখুন! (উত্তরের বিটিডাব্লু ওপি। পারফেক্ট সমাধানের জন্য ধন্যবাদ)
কিরণ

মার্জিত! আমি এই সমাধানটি পছন্দ করি
হাও কিউ

41

আমি একটি তালিকা-স্তর ব্যবহার করে দুটি আকারের সমন্বয় করে এর সমাধান করেছি, যার একটিতে নীচে স্থাপন করা উচ্চতা 1 ডিপি রয়েছে

অপশন স্ক্রিনবটমরেক্টাঙ্গেল.এক্সএমএল:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
<item>
      <shape>
            <solid android:color="#535353" />
      </shape>
</item>
<!-- This is the main color -->
<item android:bottom="1dp">
     <shape>
           <solid android:color="#252525" />
     </shape>
</item>
</layer-list>

তারপরে, বিন্যাস / main.xML ফাইলটিতে

<TextView
    android:id="@+id/bottom_rectangle"
    android:background="@drawable/optionscreen_bottomrectangle"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_below="@id/table_options"
    android:layout_above="@id/exit_bar"/>

যা পটভূমিতে টেবিল_পশন এবং প্রস্থান_বারের মধ্যে এবং প্রস্থান_বার আগে 1 ডিপি লাইন প্রিন্ট করার পূর্বে ফাঁক পূরণ করে। এটি আমার জন্য কৌশলটি করেছে, আমি আশা করি এটি অন্য কাউকে সাহায্য করবে।

উত্তরগুলি সঠিক ক্রমে স্তর স্থাপনের জন্য সম্পাদিত উত্তর। থেক্স আলেক্স!


আপনি যদি সত্যিই নিজের উত্তর পেতে চান তবে কোনও উত্তর পোস্ট না করা সুবিধাজনক হতে পারে। যখন অন্যান্য ডেভসরা দেখতে পেয়েছে যে ইতিমধ্যে একটি উত্তর রয়েছে (তবে এটি আসলে অযোগ্য) এগুলি উত্তর দেওয়ার মতো ঝোঁক নয়।
মিঃস্বনফ্লেকে

31

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

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- This is the line -->
    <item>
          <shape>
                <padding android:left="0dp" android:top="1dp" android:right="0dp" android:bottom="1dp"/>
                <solid android:color="#898989" />
          </shape>
    </item>
    <!-- This is the main color -->
    <item>
         <shape>
             <solid android:color="#ffffff" />
         </shape>
    </item>
</layer-list>

4
আপনার যদি গোলাকার কোণগুলির প্রয়োজন হয় তবে এটি এখন পর্যন্ত সেরা উত্তর।
ম্যাককিনলে স্মিথ

এই একটি আমাকে প্রচুর সাহায্য করেছে। অনুগ্রহ করে একবার চেষ্টা করে দেখুন
বয়

@ug_ আমি মনে করি এটি সর্বোত্তম পন্থা। নিখুঁতভাবে কাজ করে, ধন্যবাদ
ললিত শর্মা

কাজ। অ্যান্ড্রয়েড স্টুডিওতে (v1.1) পূর্বরূপ ফলকে সম্পূর্ণ ভুল দেখাচ্ছে তবে ডিভাইসে এটি ঠিক আছে।
মুরাত Öগাত

26

@ ম্যারাগুজের উত্তর পিছনের দিকে রয়েছে, যেহেতু স্তর-তালিকা অঙ্কনযোগ্যগুলি শীর্ষ থেকে নীচে আঁকবে (অর্থাত তালিকার শেষ আইটেমটি শীর্ষে আঁকা):

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
<item>
      <shape>
            <solid android:color="#535353" />
      </shape>
</item>
<!-- This is the main color -->
<item android:bottom="1dp">
     <shape>
           <solid android:color="#252525" />
     </shape>
</item>

</layer-list>

এটি কার্যকরভাবে লাইন রঙের সাথে আকারটি পূর্ণ করবে, তারপরে পটভূমির রঙটি আঁকবে, লাইন রঙটি দেখানোর জন্য শেষ 1dp সাফ রেখে।


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


<item>
    <shape android:shape="rectangle" >
        <stroke  android:width="2dp"
                 android:color="#BBBBBB" />
        <solid android:color="@android:color/transparent" />
    </shape>
</item>
<item  android:bottom="2dp" >
    <shape android:shape="rectangle" >
        <stroke  android:width="2dp"
                 android:color="@color/main_background_color" />
        <solid android:color="@android:color/transparent" />
    </shape>
</item>


2

আমি নিম্নলিখিত কোড ব্যবহার করেছি।

<?xml version="1.0" encoding="UTF-8"?>
<!-- inset is used to remove border from top, it can remove border from any other side-->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetTop="-2dp" android:insetLeft="-2dp" android:insetRight="-2dp"
    >
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rectangle">
        <stroke android:width="1dp" android:color="@color/colorPrimary" />
        <solid android:color="#0000"/>
        <padding android:left="2dp" android:top="2dp" android:bottom="2dp" android:right="2dp"/>
    </shape>
</inset>

0

সহজ এবং দক্ষ

একটি স্বচ্ছ দৃশ্য এবং সবকিছু বাইরে কিছু রং এর একটি ওভারলে আছে আছে, আপনি কি কি করতে পারেন মতামত যে কেন্দ্র দৃশ্য পদবিন্যাস বাইরে মতামত ছাড়া মধ্যমনি encapsulate গড়ে তুলতে

এইভাবে আপনি বিন্যাসে একটি আকর্ষণীয় বাহ্যিক এড়ানো এবং রানটাইমের সময় গণনা না করে আপনার দৃষ্টিভঙ্গির দূরত্বের উপর আরও নিয়ন্ত্রণ রাখতে পারেন।

<androidx.constraintlayout.widget.ConstraintLayout .. >

    <View
        android:id="@+id/center"
        android:layout_width="100dp"
        android:layout_height="100dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:background="@color/transparent"/>

   <View
        android:id="@+id/left_overlay"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@id/center"
        app:layout_constraintTop_toBottomOf="@id/top_overlay"
        app:layout_constraintBottom_toTopOf="@id/bottom_overlay"
        android:background="@color/black"
        android:alpha="0.5"
        />

    <View
        android:id="@+id/right_overlay"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintLeft_toRightOf="@id/center"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/top_overlay"
        app:layout_constraintBottom_toTopOf="@id/bottom_overlay"
        android:background="@color/black"
        android:alpha="0.5"
        />

    <View
        android:id="@+id/top_overlay"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/center"
        android:background="@color/black"
        android:alpha="0.5"
        />

    <View
        android:id="@+id/bottom_overlay"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@id/center"
        android:background="@color/black"
        android:alpha="0.5"
        />

</androidx.constraintlayout.widget.ConstraintLayout>

জিএল

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