আমি কীভাবে এক্সএমএল ব্যবহার করে রঙের অঙ্কের গোলাকার কোণার ব্যাসার্ধ সেট করব?


108

অ্যান্ড্রয়েড ওয়েবসাইটে রঙ বর্ণনযোগ্য সম্পর্কে একটি বিভাগ রয়েছে । এক্সএমএলে এই অঙ্কনযোগ্যগুলি সংজ্ঞায়িত করা দেখে মনে হচ্ছে:

<resources>
    <drawable name="solid_red">#f00</drawable>
    <drawable name="solid_blue">#0000ff</drawable>
    <drawable name="solid_green">#f0f0</drawable>
</resources>

জাভা এপি-তে, তাদের বৃত্তাকার কোণগুলি সংজ্ঞায়িত করার জন্য নিম্নলিখিত পদ্ধতি রয়েছে:

setCornerRadius(float radius)

এক্সএমএলে গোলাকার কোণগুলি সেট করার কোনও উপায় আছে কি?


কোড দেখতে (গ্রেডিয়েন্ট drawables) থেকে সেট কোণে করতে: stackoverflow.com/questions/8709595/...
samis

উত্তর:


319

<shape>গোলাকার কোণগুলির সাথে এক্সএমএলে একটি অঙ্কনযোগ্য তৈরি করতে ট্যাগটি ব্যবহার করুন । (আপনি রঙের গ্রেডিয়েন্ট সংজ্ঞায়িত করার মতো শেপ ট্যাগের সাহায্যে অন্যান্য জিনিসগুলি করতে পারেন)।

একটি সাদা ব্যাকগ্রাউন্ড, কালো সীমানা এবং বৃত্তাকার কোণগুলির সাথে একটি অঙ্কনযোগ্য তৈরি করতে আমি আমার অ্যাপ্লিকেশনগুলির একটিতে ব্যবহার করছি এমন একটি এক্সএমএল ফাইলের একটি অনুলিপি:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff"/>    
             
    <stroke android:width="3dp"
            android:color="#ff000000" />

    <padding android:left="1dp"
             android:top="1dp"
             android:right="1dp"
             android:bottom="1dp" /> 
             
    <corners android:radius="7dp" /> 
</shape>

1
এই ফাইলটি কোথায় সংরক্ষণ করব এবং কীভাবে এটি আমার জাভা কোডে পাবেন? ধন্যবাদ
shyam

7
অঙ্কনযোগ্য ডিরেক্টরির মধ্যে XML ফাইল হিসাবে এটি সংরক্ষণ করুন, তারপর এটি ব্যবহার মত যদি আপনি কোন অঙ্কনযোগ্য (আইকন বা সম্পদ ফাইল) ব্যবহার তার সম্পদ নাম (R.drawable.your_xml_name) ব্যবহার করবে
Guillaume,

30
এই বিশেষ ক্ষেত্রে সমস্ত রেডিয়াই একই, তাই আপনি অ্যান্ড্রয়েড ব্যবহার করতে পারতেন: ব্যাসার্ধ = "7 ডিপি"
উইল ক্রু

2
এছাড়াও, অ্যান্ড্রয়েড স্টুডিওতে লেআউট রেন্ডারার এটির সরবরাহ করতে সক্ষম হবেনা যদি আপনি ব্যাসার্ধকে আলাদাভাবে নির্ধারণ করেন (এমনকি একই মান সহ) এবং আপনাকে একটি সতর্কতা দেবেন "প্যাট.আইস কনভেক্স সমর্থিত নয়"। কেবল <কর্নার অ্যান্ড্রয়েড: ব্যাসার্ধ = "7 ডিপি" /> ব্যবহার করুন
ফ্রান্সেস্কো

@ শ্যাম আপনি এটিকে "পটভূমি" হিসাবে সেট করতে পারেন। আপনি যদি এটি কোনও টেক্সটভিউতে ব্যবহার করেন তবে আপনাকে শুরু এবং শেষের জন্য প্যাডিং যুক্ত মনে রাখতে হবে যাতে পাঠটি বৃত্তাকার প্রান্তে ভিড় না পায়
রোয়ানপিডি

19

mbaird এর উত্তর ভাল কাজ করে। কেবল সচেতন থাকুন যে অ্যান্ড্রয়েডে কোনও বাগ রয়েছে বলে মনে হচ্ছে (কমপক্ষে ২.১), আপনি যদি কোনও ব্যক্তিগত কোণার ব্যাসার্ধকে 0 তে সেট করেন তবে এটি সমস্ত কোণকে 0 তে বাধ্য করে (কমপক্ষে "ডিপি" ইউনিটগুলির ক্ষেত্রে এটি আমি করিনি) এটি অন্য কোনও ইউনিটের সাথে চেষ্টা করে দেখুন না)।

আমার এমন একটি আকারের প্রয়োজন ছিল যেখানে শীর্ষ কোণগুলি বৃত্তাকার এবং নীচের কোণগুলি বর্গক্ষেত্র ছিল। কোণাগুলি সেট করে আমি এটি অর্জন করেছি: আমি 0: 0.1dp এর চেয়ে কিছুটা বড় মানের স্কোয়ার হতে চাই। এটি এখনও বর্গাকার কোণ হিসাবে রেন্ডার করে তবে এটি অন্য কোণগুলিকে 0 ব্যাসার্ধ হতে বাধ্য করে না।


আপনি কি 0.1 ডিপি লিখেছেন? এটি কি কাজ করে, আমারও উপরের বৃত্তাকার কোণ এবং নিম্ন বর্গাকারগুলির একই সমস্যা দরকার যেমন আপনি ঠিক 1 ডিপি ব্যবহার করেছিলেন বর্গাকার কোণে এবং 10 ডিপি বৃত্তাকারগুলিতে, আপনি ঠিক বলেছেন এটি এখনও লক্ষণীয়, তবে আমাকে 90% দেয় যা আমি চাই, ডাউন্ডেশন অনুযায়ী 0 ভিত্তিতে নির্ধারিত কোণে কাজ করা উচিত ছিল।
কোডস্রাইবার

আসলে এটি কোনও বাগ নয়, এটি ডকুমেন্টেশনের মধ্যে রয়েছে: developer.android.com/guide/topics/resources/…
সুহারেসু

1

কোড নীচে চেষ্টা করুন

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
    android:bottomLeftRadius="30dp"
    android:bottomRightRadius="30dp"
    android:topLeftRadius="30dp"
    android:topRightRadius="30dp" />
<solid android:color="#1271BB" />

<stroke
    android:width="5dp"
    android:color="#1271BB" />

<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" /></shape>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.