কেউ এটারকে কী ব্যাখ্যা দিতে পারে?


90

আমি মধুচক্র গ্যালারী নমুনা কোডটি ( এখানে ) দেখছি এবং আমার নিজের অ্যাপ্লিকেশনটিতে ক্রিয়া আইটেমগুলি যুক্ত করার চেষ্টা করার সময় আমি নীচের কোডটি পেরিয়ে গিয়েছিলাম:

<item android:id="@+id/camera"
    android:title="Camera"
    android:icon="?attr/menuIconCamera"
    android:showAsAction="ifRoom" />

?attrআমাকে একটি লুপ জন্য নিক্ষেপ করা হয়। কেউ দয়া করে ব্যাখ্যা করতে পারেন যে এটি কী করছে? এটি কীভাবে একটি আঁকার সাথে সম্পর্কিত? আমি গুগলে কোনও ভাল তথ্য খুঁজে পেতে পারে না। এছাড়াও আমরা কেবল আইকনগুলির পরিবর্তে আইকনগুলির জন্য ব্যবহার করতে পারি এমন বৈশিষ্ট্যগুলির তালিকা বা গ্যালারী রয়েছে menuIconCamera?

ধন্যবাদ

সম্পাদনা করুন: আমি আশেপাশে আরও কিছু অনুসন্ধান করে দেখেছি এবং এটি দেখতে পেলাম যে অ্যাটর্স.এক্সএমএল দেখে মনে হচ্ছে:

<resources>
<declare-styleable name="AppTheme">
    <attr name="listDragShadowBackground" format="reference" />
    <attr name="menuIconCamera" format="reference" />
    <attr name="menuIconToggle" format="reference" />
    <attr name="menuIconShare" format="reference" />
</declare-styleable>

দুর্ভাগ্যক্রমে এটি আমার জন্য আরও বিভ্রান্তিকর করে তোলে। এই কি করছে?

উত্তর:


65

?attr/menuIconCameraমানের অর্থ হল যে থেকে একটি আইকন menuIconCameraবর্তমান থিম বৈশিষ্ট্য ব্যবহার করা হবে।

ফাইলের menuIconCameraকোথাও অ্যাট্রিবিউটকে একটি অঙ্কনযোগ্য অবশ্যই নিয়োগ করা উচিত themes.xml। যদি এই বৈশিষ্ট্যের বিভিন্ন মান সহ দুটি থিম থাকে তবে প্রকৃত আইকন বর্তমানে ব্যবহৃত থিমের উপর নির্ভর করবে।

attrs.xmlফাইল কাস্টম বৈশিষ্ট্যাবলী সংজ্ঞায়িত করতে ব্যবহৃত হয়। এই সংজ্ঞা ব্যতীত সংকলক অজানা বৈশিষ্ট্যগুলিকে ভ্রান্ত হিসাবে বিবেচনা করবে।


4
আপনি ঠিক ঠিক বলেছেন, <আইটেমের নাম = "মেনু আইকন ক্যামেরা"> @ আঁকা / আইকো_মেনু_কামেরা_হোলো_লাইট </ i>> আপনাকে অনেক ধন্যবাদ। আমি দেখতে পাচ্ছি যে আইসি_মেনু_ ক্যামেরা_হোলো_লাইট একটি স্থানীয় অঙ্কনযোগ্য। 3.x এর কি 2.x এর মতো সরকারী আইকনগুলি নির্মিত না?
ফুয়েগোফিনজার্স

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

51

?attr:সিনট্যাক্স বর্তমান থিমটি গুণাবলীর ব্যবহার করার জন্য ব্যবহার করা হয়। দেখুন শৈলী বৈশিষ্ট্য উল্লেখ


4
সরবরাহিত লিঙ্কটি খুব, খুব সহায়ক ছিল। ধন্যবাদ!
স্বে

4
খুব সহায়ক, তবে আপনার এখনও সেই লিঙ্কটির মূল অংশগুলি পোস্ট করা উচিত।
গুস্তাভোহেঙ্কে

4
এটি লিঙ্কযুক্ত নিবন্ধটির সর্বাধিক সহায়ক অংশ: 'একটি শৈলীর বৈশিষ্ট্য সংস্থান আপনাকে বর্তমানে প্রয়োগ হওয়া থিমের কোনও বৈশিষ্ট্যের মান উল্লেখ করতে দেয়। একটি স্টাইল বৈশিষ্ট্য উল্লেখ করে আপনি ইউআই উপাদানগুলিকে একটি হার্ড কোডিং মান সরবরাহ না করে বর্তমান থিম দ্বারা সরবরাহিত স্ট্যান্ডার্ড পরিবর্তনের সাথে মেলে স্টাইল করে তাদের চেহারাটি কাস্টমাইজ করতে দেয়। একটি শৈলী বৈশিষ্ট্য উল্লেখ করে মূলত বলা হয়, "বর্তমান
থিমটিতে

24

আমি জানি এই পোস্টটি অনেক পুরানো, তবে আমি অনুভব করি যে নিম্নলিখিত ব্যাখ্যাগুলি প্রাথমিকভাবে এটি সহজে বুঝতে সাহায্য করবে।

সুতরাং সাধারণ লোকের পদে,

someAttribute="?attr/attributeName" অর্থ -

বর্তমান থিমে অ্যাট্রিবিউটের নামটির মান যাই হোক না কেন কিছুটির জন্য মান নির্ধারণ করুন

একটি সাধারণ উদাহরণটি একটি সরঞ্জামদণ্ড স্টাইল করার ক্ষেত্রে ঘটে

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/primary_color</item>
       //some more stuff here
</style>
<!-- custom toolbar style -->
<style name="myToolbar" parent="Widget.AppCompat.Toolbar">
      <item name="android:background">?attr/colorPrimary</item>
     //some code here
</style>

এখানে এর মান android:backgroundসেট করা হবে @color/primary_colorকারণ বর্তমান থিম (AppTheme) এ ?attr/colorPrimaryবোঝায়@color/primary_color


17

আমার ইংরেজি ভাল না, দুঃখিত। তবে আমি এই প্রশ্ন জানি

android:icon="?attr/menuIconCamera" ব্যবহার করতে চান

attrs.xML

<resources>
    <declare-styleable name="AppTheme">
        <attr name="listDragShadowBackground" format="reference" />
        <attr name="menuIconCamera" format="reference" />
        <attr name="menuIconToggle" format="reference" />
        <attr name="menuIconShare" format="reference" />
    </declare-styleable>
</resources>

styles.xML

<style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/ActionBar.Light</item>
        <item name="android:windowActionBarOverlay">true</item>
        <item name="listDragShadowBackground">@android:color/background_light</item>
        <item name="menuIconCamera">@drawable/ic_menu_camera_holo_light</item> //this....
        <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_light</item>
        <item name="menuIconShare">@drawable/ic_menu_share_holo_light</item>
    </style>

ব্যবহার @drawable/ic_menu_camera_holo_light


4

এটি স্টাইলের বৈশিষ্ট্যগুলি রিফার করার জন্য। R.attr দেখুন

?[<package_name>:][<resource_type>/]<resource_name>

উল্লেখ শৈলী বৈশিষ্ট্য


4
একটি জিনিস যা কোথাও নথিভুক্ত বলে মনে হয় না তা হ'ল '<প্যাকেজ_নাম>' রিসোর্সটি যে কোনও কিছু হিসাবে ঘোষিত এর পুরো প্যাকেজের নাম। আরও স্পষ্টতই, এটি কোনও এক্সএমএল নেমস্পেস উপসর্গ নয়, যদিও সিনট্যাক্স এটির পরামর্শ দিতে পারে। উদাহরণস্বরূপ, অ্যাপকম্প্যাট লাইব্রেরি দ্বারা ঘোষিত কোনও অ্যাট্রি উল্লেখ করার জন্য, ব্যবহার করুন android.support.v7.appcompat:
সম্প্রদায়কে

4

এই ব্লগ পোস্টটি বর্তমান থিমটিতে সংজ্ঞায়িত স্টাইল-গুণাবলীগুলির মানগুলিকে কীভাবে উল্লেখ করতে পারে তা চমত্কার কাজ করে htt

  • আপনি যখন ?স্বরলিপিটি দেখেন - এর অর্থ হ'ল আমরা একটি শৈলীর বৈশিষ্ট্যটি উল্লেখ করার চেষ্টা করছি - একটি মান যা বর্তমান থিমের উপর নির্ভর করে পরিবর্তিত হতে পারে। প্রতিটি নির্দিষ্ট থিমে আমরা এই বৈশিষ্ট্যটিকে ওভাররাইড করতে পারি, তাই এক্সএমএল লেআউটটি পরিবর্তন করার দরকার নেই এবং সঠিক থিমটি প্রয়োগ করা দরকার।

  • যখন আপনি @স্বরলিপিটি দেখেন - আমরা প্রকৃত সংস্থান মান (রঙ, স্ট্রিং, মাত্রা ইত্যাদি) উল্লেখ করি। এই সংস্থানটির একটি আসল মান হওয়া উচিত। এই ক্ষেত্রে আমরা সঠিকভাবে জানি যে আমরা কী মান নিয়ে কাজ করছি।

এখানে একটি উদাহরণ:

    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="LauncherButton" parent="TextAppearance.AppCompat.Medium">
        <item name="android:textColor">?colorAccent</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_centerHorizontal">true</item>
        <item name="android:textAllCaps">false</item>
    </style>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.