অ্যান্ড্রয়েড - কাস্টম বৈশিষ্ট্য সহ কাস্টম UI


113

আমি জানি কাস্টম UI উপাদান তৈরি করা সম্ভব (ভিউ বা নির্দিষ্ট UI উপাদান এক্সটেনশনের মাধ্যমে)। তবে নতুন নির্মিত ইউআই উপাদানগুলির নতুন বৈশিষ্ট্য বা বৈশিষ্ট্যগুলি সংজ্ঞায়িত করা কি সম্ভব (আমি উত্তরাধিকার সূত্রে প্রাপ্ত নয়, তবে কিছু নির্দিষ্ট আচরণ সংজ্ঞায়িত করার জন্য একেবারে নতুন, আমি ডিফল্ট যথাযথ বা বৈশিষ্ট্যের সাথে পরিচালনা করতে সক্ষম নই)

যেমন উপাদান আমার কাস্টম উপাদান:

<com.tryout.myCustomElement
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="Element..."
   android:myCustomValue=<someValue>
/>

তাহলে মাই কাস্টমভ্যালু সংজ্ঞা দেওয়া সম্ভব ?

ধন্যবাদ



আরে এখানে আপনার অ্যান্ড্রয়েডের কাস্টম বৈশিষ্ট্যাবলী সম্পর্কে কিছু সুন্দর নিবন্ধ আছে - এমসিএমওয়াইলওয়্যার.আর
2016/

এই সম্পর্কিত প্রশ্নের আমার উত্তর একবার দেখুন ।
হেলিওস

উত্তর:


258

হ্যাঁ. সংক্ষিপ্ত গাইড:

1. একটি বৈশিষ্ট্য এক্সএমএল তৈরি করুন

/res/values/attrs.xmlবৈশিষ্ট্য এবং এটির টাইপ সহ ভিতরে একটি নতুন এক্সএমএল ফাইল তৈরি করুন

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <declare-styleable name="MyCustomElement">
        <attr name="distanceExample" format="dimension"/>
    </declare-styleable>
</resources>

মূলত আপনাকে <declare-styleable />আপনার দর্শনের জন্য একটি সেট আপ করতে হবে যাতে আপনার সমস্ত কাস্টম বৈশিষ্ট্য রয়েছে (এখানে কেবলমাত্র একটি)। আমি কখনই সম্ভাব্য ধরণের সম্পূর্ণ তালিকা পাই নি, সুতরাং আমার অনুমান অনুসারে আপনার উত্সটি দেখার প্রয়োজন। যে প্রকারগুলি আমি জানি সেগুলি হ'ল রেফারেন্স (অন্য সংস্থানটিতে), রঙ, বুলিয়ান, মাত্রা, ভাসা, পূর্ণসংখ্যা এবং স্ট্রিং । তারা বেশ স্ব ব্যাখ্যাযোগ্য

২. আপনার বিন্যাসে বৈশিষ্ট্যগুলি ব্যবহার করুন

এটি একটি ব্যতিক্রম ব্যতীত উপরের মতো একইভাবে কাজ করে। আপনার কাস্টম বৈশিষ্ট্যের জন্য এটির নিজস্ব এক্সএমএল নেমস্পেস দরকার।

<com.example.yourpackage.MyCustomElement
   xmlns:customNS="http://schemas.android.com/apk/res/com.example.yourpackage"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="Element..."
   customNS:distanceExample="12dp"
   />

অনেকটাই অকপট.

৩. আপনি যে মানগুলি পাশ করেছেন তা ব্যবহার করুন

মানগুলিকে পার্স করতে আপনার কাস্টম ভিউয়ের কনস্ট্রাক্টরকে সংশোধন করুন।

public MyCustomElement(Context context, AttributeSet attrs) {
    super(context, attrs);

    TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyCustomElement, 0, 0);
    try {
        distanceExample = ta.getDimension(R.styleable.MyCustomElement_distanceExample, 100.0f);
    } finally {
        ta.recycle();
    }
    // ...
}

distanceExample এই উদাহরণে একটি ব্যক্তিগত সদস্য পরিবর্তনশীল। TypedArrayঅন্যান্য ধরণের মানকে পার্স করার জন্য অন্যান্য জিনিসগুলি পেয়েছে।

এবং এটাই. Viewএটি পরিবর্তন করতে আপনার পার্সড মানটি ব্যবহার করুন , উদাহরণস্বরূপ onDraw()চেহারাটি পরিবর্তন করতে এটি ব্যবহার করুন ।


7
টাইপডারে সম্পর্কে শুধু নোট করুন। তাদের সাথে সম্পন্ন হয়ে গেলে রিসাইকেল () এ কল করতে ভুলবেন না।
zskalnik

এখানে আপনি একটি ভাল তালিকা পাবেন github.com/android/platform_frameworks_base/blob/master/core/…
ইয়াহিয়া

আইডিই (উদাহরণস্বরূপ গ্রহন) কাস্টম বৈশিষ্ট্যের কী / মানগুলি স্বয়ংক্রিয়ভাবে পূর্ণ করে?
অ্যালিকেলজিন-কিলাকা

23
গ্রেড বিল্ডগুলির জন্য http://schemas.android.com/apk/res-autoকাস্টম নেমস্পেস ঘোষণার সময় আপনার ব্যবহার করা উচিত
ডোরি

2
পদক্ষেপ 3 এ, আপনি কেবল ব্যবহার করতে পারেন String initialText = attrs.getAttributeValue("http://schemas.android.com/apk/res-auto", "initialText");যেখানে অ্যাট্রিবিউটরটি কনস্ট্রাক্টরে পাস করা হয় এবং 'ইনিশিয়াল টেক্সট' আপনার কাস্টম বৈশিষ্ট্যের নাম
কোসিয়ারা - বার্টোস কোসারজেকি

21

আপনার রেজস / মান ফোল্ডারে অ্যাটারেক্সেক্সএমএল তৈরি করুন। সেখানে আপনি আপনার বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে পারেন:

<declare-styleable name="">
    <attr name="myCustomValue" format="integer/boolean/whatever" />
</declare-styleable>

এরপরে আপনি এটি আপনার লেআউট ফাইলে ব্যবহার করতে চাইলে আপনাকে যুক্ত করতে হবে

xmlns:customname="http://schemas.android.com/apk/res/your.package.name"

এবং তারপরে আপনি এর সাথে মানটি ব্যবহার করতে পারেন customname:myCustomValue=""


এটি উত্তর নয়, প্রশ্নটি হল জাভা থেকে অগ্রগতিতে কীভাবে পরিবর্তন করা যায়
ফজল

-11

হ্যাঁ, আপনি পারেন <resource>। কেবলমাত্র ট্যাগ ব্যবহার করুন ।
এটার মত:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CodeFont" parent="@android:style/TextAppearance.Medium">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#00FF00</item>
        <item name="android:typeface">monospace</item>
    </style>
</resources>

অফিসিয়াল ওয়েবসাইট থেকে লিঙ্ক


উত্তরের জন্য ধন্যবাদ. তবে সংস্থানগুলিতে, আমি ডিফল্ট "অ্যান্ড্রয়েড:" মানগুলি দেখি। আমার বক্তব্যটি হ'ল, আমি কি আমার পছন্দসই ইউআই উপাদানটির প্যারামিটার হিসাবে অ্যান্ড্রয়েড: ফোননামসলেক্টেড = "সত্য" থাকতে পারি?
ওয়েপয়েন্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.