'অ্যাপ' অ্যান্ড্রয়েড এক্সএমএল নেমস্পেসটি কী?


164

এখানে appআমি একটি res/menu/main.xmlফাইল থেকে যে নেমস্পেসটি দেখেছি তার একটি উদাহরণ

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
<item android:id="@+id/action_settings"
    android:title="@string/action_settings"
    android:orderInCategory="100"
    app:showAsAction="never" />
</menu>

appনেমস্পেস কী উদ্দেশ্যে কাজ করে? এটি কি একটি "স্ট্যান্ডার্ড" অ্যান্ড্রয়েড এক্সএমএল নেমস্পেস? দুটি আলাদা আলাদা নেমস্পেসে স্থাপন করা একই বৈশিষ্ট্যের জন্য একই মান বিকল্পগুলি পাওয়া যায় (যেমন app:showAsActionএবং android:showAsAction)।

ডক্স থেকে : android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]

উদাহরণস্বরূপ, উপরের উদাহরণের রেখাটির অর্থ কি অন্যরকম অর্থ যদি বৈশিষ্ট্যটি পরিবর্তিত হত:

android:showAsAction="never"

এটি প্রায় দেখে মনে হচ্ছে এটি কিছুটা "সাবক্লাসিং" মেকানিজম হতে পারে তবে appগুগল / অ্যান্ড্রয়েড উত্স থেকে নেমস্পেসে আমি কোনও আসল ডকুমেন্টেশন খুঁজে পাচ্ছি না ।

উত্তর:


213

appনামস্থান একটি লাইব্রেরি নির্দিষ্ট নয়, কিন্তু এটা সব গুণাবলীর আপনার অ্যাপে সংজ্ঞায়িত করার জন্য ব্যবহৃত হয় কিনা আপনার কোড দ্বারা বা লাইব্রেরি দ্বারা আপনাকে আমদানি করতে, কার্যকরভাবে কাস্টম জন্য একটি একক বিশ্বব্যাপী নামস্থান উপার্জন বৈশিষ্ট্যাবলী - অর্থাত, Android এর জন্য সিস্টেম দ্বারা সংজ্ঞায়িত করা হয় না বৈশিষ্ট্যাবলী ।

এই ক্ষেত্রে, appcompat-v7গ্রন্থাগারটি android:অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিকে সমর্থন করার জন্য নেমস্পেসের প্রতিবিম্বিত কাস্টম বৈশিষ্ট্যগুলি ব্যবহার করে (উদাহরণস্বরূপ: android:showAsActionকেবলমাত্র এপিআই 11 এ যুক্ত হয়েছিল, তবে app:showAsAction(আপনার অ্যাপ্লিকেশনটির অংশ হিসাবে সরবরাহ করা হচ্ছে) আপনার অ্যাপ্লিকেশনটির সমস্ত API স্তরে কাজ করে) - স্পষ্টতই ব্যবহার android:showAsActionAPI লেভেলের কাজ করবে না যেখানে যে বৈশিষ্ট্য সংজ্ঞায়িত করা হয় না।


1
ধন্যবাদ! শেষ পর্যন্ত ডকুমেন্টেশনে এর একটি উল্লেখ পেয়ে আমি খুশি। একটি ফলো-আপ প্রশ্ন, যদিও। আপনার লিঙ্কে অ্যাকশন বার ডকস বলেছেন: "লক্ষ্য করুন যে উপরে শোঅ্যাকশন অ্যাট্রিবিউট <মেনু> ট্যাগে সংজ্ঞায়িত একটি কাস্টম নেমস্পেস ব্যবহার করে support সমর্থন লাইব্রেরি দ্বারা সংজ্ঞায়িত কোনও এক্সএমএল বৈশিষ্ট্যগুলি ব্যবহার করার সময় এটি প্রয়োজনীয়, কারণ এই বৈশিষ্ট্যগুলিতে বিদ্যমান নেই পুরানো ডিভাইসগুলিতে অ্যান্ড্রয়েড কাঠামো So সুতরাং আপনাকে সহায়তা লাইব্রেরি দ্বারা সংজ্ঞায়িত সমস্ত বৈশিষ্ট্যের উপসর্গ হিসাবে আপনার নিজের নেমস্পেসটি অবশ্যই ব্যবহার করতে হবে ""
কোডার 123

1
সুতরাং পুরানো ডিভাইসগুলিতে কী ঘটে যেখানে বৈশিষ্ট্যগুলি কাঠামোর মধ্যে বিদ্যমান না? এটি এখনও আমার কাছে পরিষ্কার নয় যে কীভাবে কোনও কাস্টম নেমস্পেস কোনও অ্যাট্রিবিউটর জন্য সমর্থন অনুপস্থিত সমর্থনকে ঘিরে কাজ করে। showAsActionকাস্টম নেমস্পেসের অধীনে ঘোষণার অর্থ কী এটি নতুন প্ল্যাটফর্মগুলিতে প্রত্যাশার মতো কাজ করে এবং পুরানোগুলিতে উপেক্ষা করা হয়?
কোডার 123

4
যে বৈশিষ্ট্যগুলি বিদ্যমান নেই সেগুলি চুপচাপ উপেক্ষা করা হয়। আপনি যখন একটি কাস্টম বৈশিষ্ট্য তৈরি করেন, আপনি গ্যারান্টি দিচ্ছেন যে রানটাইমের সময় কাস্টম বৈশিষ্ট্যটি উপস্থিত থাকবে (স্পষ্টত: এর সংজ্ঞাটি আপনার অ্যাপ্লিকেশনটির সাথে অন্তর্ভুক্ত করা হয়েছে)। অতএব সমর্থন লাইব্রেরি কাস্টম বৈশিষ্ট্যগুলি ব্যবহার করে যাতে মেনুগুলি তৈরির জন্য তাদের কাস্টম কোডটি একক কোড পাথ ব্যবহার করতে পারে যা সমস্ত এপিআই সংস্করণে কাজ করে, প্রয়োজনীয়ভাবে android:সংস্করণগুলি ব্যবহার করার প্রয়োজনের পরিবর্তে ।
ianhanniballake

2
আমি ঠিক না পেলে আমি দুঃখিত। নাম স্থান পরিবর্তন করে কোনও বৈশিষ্ট্যের সংজ্ঞা কীভাবে সরবরাহ করা যায় তা বুঝতে আপনি আমাকে সাহায্য করতে পারেন? তাহলে showAsNameঅ্যাট্রিবিউট একটি পুরোনো গ্রন্থাগার সমর্থিত নয়, কিভাবে একটি কাস্টম ব্যবহার করে নামস্থান প্ল্যাটফর্ম সম্ভব মান অপশন (পরিসীমা জানতে দিন ifRoom, neverইত্যাদি), এবং জানতে সেই সব বিকল্প ব্যাখ্যা করার কীভাবে? আমি ধরে নিচ্ছি যে "অ্যাট্রিবিউটস যা বিদ্যমান নেই" এর অর্থ এমন বৈশিষ্ট্য যার জন্য গ্রন্থাগারে কোনও প্রয়োগ নেই। কষ্টের android:জন্য অদলবদল করা app:সম্পূর্ণরূপে মনে হচ্ছে। আমি কিছু অনুপস্থিত করছি?
কোডার 123

14
এর দুটি অংশ রয়েছে: 1) কাস্টম অ্যাট্রিবিউট ( app:showAsName) এবং এর সমস্ত সম্ভাব্য মানগুলি আপনার অ্যাপটিতে অন্তর্ভুক্ত করা হয় যখন আপনি appcompat-v7গ্রন্থাগারটি অন্তর্ভুক্ত করেন (এটি তার attrs.xmlফাইলে এটি সংজ্ঞায়িত করে )। 2) AppCompat গ্রন্থাগার (বিশেষত ActionMenuView যা স্বয়ংক্রিয়ভাবে যখন আপনি ব্যবহার ব্যবহৃত ActionBarActivity) পার্স ও ব্যবহার করে app:showAsActionসঠিকভাবে সব API লেভেলের উপর একই ভাবে আইটেম দেখানোর জন্য। এটি অবশ্যই এক্সএমএল এবং কোড উভয়কে এক সাথে কাজ করার প্রয়োজন।
ianhanniballake

0

আপনি এই লিঙ্ক থেকে কিছু ব্যাখ্যা পেতে পারেন

এক্সএমএল নামস্থান

নেমস্পেসের ঘোষণাটি কোনও এক্সএমএল নেমস্পেসটি সংরক্ষিত এক্সএমএল বৈশিষ্ট্য xMLns বা xMLns: উপসর্গ ব্যবহার করে ঘোষণা করা হয়, যার মান অবশ্যই একটি বৈধ নেমস্পেসের নাম হতে হবে।

উদাহরণস্বরূপ, নিম্নলিখিত ঘোষণাপত্রটি এক্সএইচটিএমএল নেমস্পেসের "xhtml:" উপসর্গটিকে মানচিত্র করে:

xmlns: XHTML = "http://www.w3.org/1999/xhtml"

উপসর্গ "এক্সএইচটিএমএল:" দিয়ে শুরু হওয়া যে কোনও উপাদান বা বৈশিষ্ট্যটি এক্সএইচটিএমএল নেমস্পেসে বিবেচিত হবে, যদি এটি বা পূর্বপুরুষের উপরের নেমস্পেসের ঘোষণা থাকে।

একটি ডিফল্ট নেমস্পেস ঘোষণা করাও সম্ভব। উদাহরণ স্বরূপ:

xmlns = "http://www.w3.org/1999/xhtml"

এই ক্ষেত্রে, নেমস্পেস উপসর্গ ব্যতীত যে কোনও উপাদান এক্সএইচটিএমএল নেমস্পেসে বিবেচিত হবে, যদি এটি বা পূর্বপুরুষের উপরের ডিফল্ট নেমস্পেস ঘোষণা থাকে।

সুযোগে যদি কোনও ডিফল্ট নেমস্পেসের ঘোষণা না থাকে তবে নামের জায়গার নামের কোনও মূল্য নেই [[]] সেক্ষেত্রে সুস্পষ্ট নেমস্পেস প্রিফিক্স ব্যতীত কোনও উপাদান কোনও নেমস্পেসে নয় বলে বিবেচিত হয়।

বৈশিষ্ট্যগুলি কখনই ডিফল্ট নেমস্পেসের সাপেক্ষে হয় না। সুস্পষ্ট নেমস্পেস প্রিফিক্স ব্যতীত একটি বৈশিষ্ট্য কোনও নেমস্পেসে নয় বলে বিবেচিত হয়।

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