অ্যাকশনবারের আকার পিক্সেল কত?


উত্তর:


558

এক্সএমএলে অ্যাকশনবারের উচ্চতা পুনরুদ্ধার করতে, কেবল ব্যবহার করুন

?android:attr/actionBarSize

বা আপনি যদি অ্যাকশনবার্ল্লক বা অ্যাপকম্প্যাট ব্যবহারকারী হন তবে এটি ব্যবহার করুন

?attr/actionBarSize

রানটাইমের সময় আপনার যদি এই মানটি প্রয়োজন হয় তবে এটি ব্যবহার করুন

final TypedArray styledAttributes = getContext().getTheme().obtainStyledAttributes(
                    new int[] { android.R.attr.actionBarSize });
mActionBarSize = (int) styledAttributes.getDimension(0, 0);
styledAttributes.recycle();

এটি কোথায় সংজ্ঞায়িত হয়েছে তা যদি আপনার বুঝতে প্রয়োজন:

  1. বৈশিষ্ট্যটির নামটি নিজেই প্ল্যাটফর্মের /res/values/attrs.xML এ সংজ্ঞায়িত করা হয়
  2. প্ল্যাটফর্মের থিমস.এক্সএমএল এই বৈশিষ্ট্যটি চয়ন করে এবং এর জন্য একটি মান নির্ধারণ করে।
  3. পদক্ষেপ 2 এ নির্ধারিত মানটি বিভিন্ন ডিভাইসের আকারের উপর নির্ভর করে, যা প্ল্যাটফর্মের বিভিন্ন dimens.xML ফাইলগুলিতে সংজ্ঞায়িত হয় । কোর / মাঝামাঝি / মাঝামাঝি / মান-sw600dp / dimens.xml

7
দুর্দান্ত উত্তর। আমি এই তথ্যগুলি খনন করার উপায়টি জানি, তবে এই উত্তরটি অনুসন্ধান করা খুব দ্রুত +1 ছিল। আপনার উত্তরটি কীভাবে এই জাতীয় জিনিসগুলি সন্ধান করবেন তাও একটি দুর্দান্ত ইঙ্গিত।
rekire

1
ধন্যবাদ. আমি @dimen/abc_action_bar_default_heightসরাসরি (অ্যাকশনবারকোম্যাপ্ট) ব্যবহার করার চেষ্টা করছিলাম এবং এটি (এমডিপিআই ডিভাইসে) কাজ করেছিল। তবে স্যামসাং গ্যালাক্সি এসআইআই এ এই মানটি পাওয়ার চেষ্টা করে আমাকে ভুল মূল্য ফিরিয়ে দিয়েছে। কারণ values-xlarge(কোনওভাবে) values-landল্যান্ডস্কেপ মোডের তুলনায় বেশি পছন্দ করা হয় । পরিবর্তে বৈশিষ্ট্য উল্লেখ করে একটি কবজ মত কাজ করে।
অ্যালেক্স Semeniuk

4
@ AZ13 আমি যুক্ত করতে চাই যা android.R.attr.actionBarSizeপ্রাক-3.0 ডিভাইসে 0 আকারে সমাধান হবে। সুতরাং ActionBarCompatএক ব্যবহার করার android.support.v7.appcompat.R.attr.actionBarSizeপরিবর্তে আটকে থাকবে ।
ড্র

1
লোকটি এটি পিক্সেল জিজ্ঞাসা। আমি মনে করি অ্যাকশনবার্সাইজ dp মান প্রদান করে। আমি 48dp মান পেয়েছি। এর অর্থ এটি এটিকে পিক্সেল রূপান্তর করা আমাকে xhdpi এর জন্য 96 পিক্সেল দেয়।
মুহাম্মদ

"অ্যান্ড্রয়েড.আর.অ্যাটার্টিঅ্যাকশনবারসাইজ" অ্যান্ড্রয়েড সংস্করণ ২.৩ এ কাজ করছে না, তবে "আর.আটার.অ্যাকশনবার্সসাইজ" অ্যান্ড্রয়েডের সমস্ত সংস্করণে কাজ করছে। কেবলমাত্র "অ্যান্ড্রয়েড.আর.অ্যাটার্টিফিকেশনবারসাইজ" এবং ইত্যাদির পরিবর্তে "আর.আটার.অ্যাকশনবার্সসাইজ" ব্যবহার করুন
নাথানিয়েল জবস

59

অ্যান্ড্রয়েড ৩.২ এর ডি-সংকলিত উত্স থেকে framework-res.apk, res/values/styles.xmlরয়েছে:

<style name="Theme.Holo">
    <!-- ... -->
    <item name="actionBarSize">56.0dip</item>
    <!-- ... -->
</style>

3.0 এবং 3.1 একই (কমপক্ষে এওএসপি থেকে) বলে মনে হচ্ছে ...


1
ল্যান্ডস্কেপে অ্যাকশন বারের বিভিন্ন উচ্চতা সম্পর্কে কী?
মনফ্রেড মোশার

86
4.0+ এ: ডিফল্ট 48dp, ল্যান্ডস্কেপ 40dp, sw600dp 56dp হয়
জ্যাক ওয়ার্টন

19
কোন কারণেই আপনার অ্যান্ড্রয়েড: অ্যাটর মান এবং হার্ডকডযুক্ত মানটি ব্যবহার করা উচিত নয়!
বিক্রম বডিচেরলা

45

অ্যাকশনবারের প্রকৃত উচ্চতা পেতে, আপনাকে রানটাইমগুলিতে বিশদটি সমাধান করতে হবে actionBarSize

TypedValue tv = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
int actionBarHeight = getResources().getDimensionPixelSize(tv.resourceId);

33

মধুচক্রের একটি নমুনা বোঝায় ?android:attr/actionBarSize


3
হ্যাঁ, এখানে ব্যাখ্যা করা হয়েছে: developer.android.com/guide/topics/ui/…
পয়েন্টার নুল

3
এটির উত্তরটি যদি আপনার মিনিট এসডিকে> = 11 হয় তবে আপনি যদি মিনিট <11 হয় তবে সম্ভবত আপনি ABS ব্যবহার করছেন তবে সমাধানটি হ'ল: @ মাত্রা / অ্যাব্লিউঅ্যাকশন_বার_ডিফল্ট_উত্তর
অ্যাডাম

9
এবিএসের ?attr/actionBarSize(অ্যান্ড্রয়েড নেমস্পেসের অভাব লক্ষ্য করুন) যা সমস্ত এপিআই স্তরে কাজ করে।
জ্যাক ওয়ার্টন

21

আমার পূর্ব-আইসিএস সামঞ্জস্য অ্যাপ্লিকেশনটিতে এই উচ্চতাগুলি যথাযথভাবে প্রতিলিপি করা এবং ফ্রেমওয়ার্ক কোর উত্সে খনন করা দরকার । উপরের উভয় উত্তর একরকম সঠিক।

এটি মূলত কোয়ালিফায়ার ব্যবহারের জন্য ফোটায়। উচ্চতাটি "ক্রিয়া_বার_ডিফল্ট_হাইট" মাত্রা দ্বারা সংজ্ঞায়িত করা হয়

এটি ডিফল্ট জন্য 48dip সংজ্ঞায়িত করা হয়। তবে -ল্যান্ডের জন্য এটি 40dip এবং sw600dp এর জন্য এটি 56 ডিপ।


17

আপনি যদি সাম্প্রতিক v7 অ্যাপকম্প্যাট সমর্থন প্যাকেজটি থেকে সামঞ্জস্যতা অ্যাকশনবারটি ব্যবহার করছেন তবে আপনি উচ্চতাটি ব্যবহার করে তা পেতে পারেন

@dimen/abc_action_bar_default_height

নথিপত্র


16

নতুন ভি 7 সমর্থন লাইব্রেরির সাথে (21.0.0) নামটি @ মাত্রা / অ্যাবসি_অ্যাকশন_বার_ডিফাল্ট_ইহাইট_ উপাদানেR.dimen পরিবর্তিত হয়েছে ।

সাপোর্ট লাইবের আগের সংস্করণ থেকে আপগ্রেড করার সময় আপনার সেই মানটি অ্যাকশনবারের উচ্চতা হিসাবে ব্যবহার করা উচিত


1
পারফেক্ট! এই নিশ্চিত বিটের ?attr/actionBarSizeযদি এক খুঁজছেন হয় একটি নিয়মিত মেলে ActionBar
করলিলিডমার্ক

9

আপনি যদি অ্যাকশনবারারলক ব্যবহার করে থাকেন তবে আপনি উচ্চতাটি পেতে পারেন

@dimen/abs__action_bar_default_height

abs__প্রিফিক্সড সংস্থানগুলি সরাসরি ব্যবহার করবেন না ।
জ্যাক ওয়ার্টন

2
@ জ্যাকওয়ার্টন দয়া করে তার পরিবর্তে কীভাবে এটি সঠিকভাবে করবেন তা আমাদের জানান tell
জেস্পারবি

আপনার নিজস্ব মাত্রা তৈরি করুন যাতে আপনি AB_ এর উপর নির্ভরশীল না হন।
কোডওয়ার্ড হয়েছে


1
public int getActionBarHeight() {
    int actionBarHeight = 0;
    TypedValue tv = new TypedValue();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv,
                true))
            actionBarHeight = TypedValue.complexToDimensionPixelSize(
                    tv.data, getResources().getDisplayMetrics());
    } else {
        actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,
                getResources().getDisplayMetrics());
    }
    return actionBarHeight;
}

0

ক্লাস সারাংশ সাধারণত একটি ভাল জায়গা থেকে শুরু হয়। আমি মনে করি getHeight () পদ্ধতিটি যথেষ্ট হওয়া উচিত।

সম্পাদনা করুন:

আপনার প্রস্থের প্রয়োজন হলে এটি পর্দার প্রস্থ (ডান?) হওয়া উচিত এবং এটি এভাবে সংগ্রহ করা যেতে পারে ।


2
আজব - getHeight () ফলাফল শূন্য।
ইউজিন

1
আমার বিকাশে, আমি লক্ষ্য করেছি যে এটি অন রিসুমে শূন্য ফিরে আসে ()। হোয়াভার কলিং getActionBar ()। GetHeight () যখন আপনার আসলে প্রয়োজন হবে তখন এটি ইতিবাচক> 0 মান প্রদান করে।
টু

@ গেটহাইট () -এর জন্য অনুমানের কথাটি বলেছে যে এটি অ্যাকশনবারের জন্য বর্তমান প্রস্থটি ফিরিয়ে দেয়, যা সম্ভবত তৈরি হয় যখন 0 হয়
নামটি প্রদর্শিত হবে

0

আমার গ্যালাক্সি এস 4 এ> 441 ডিপিআই> 1080 x 1920> গেটআরসোর্সস () দিয়ে অ্যাকশনবারের উচ্চতা পাওয়া getপরিমিতি পিক্সেল সাইজ আমি পেয়েছি 144 পিক্সেল।

Px = dp x (dpi / 160) সূত্র ব্যবহার করে, আমি 441dpi ব্যবহার করছিলাম, আমার ডিভাইসটি
480dpi বিভাগে রয়েছে। সুতরাং ফলস্বরূপ নিশ্চিত করে যে।


0

আমি নিজের জন্য এইভাবে করেছি, এই সহায়ক সহায়কটি কারও কাজে আসবে:

private static final int[] RES_IDS_ACTION_BAR_SIZE = {R.attr.actionBarSize};

/**
 * Calculates the Action Bar height in pixels.
 */
public static int calculateActionBarSize(Context context) {
    if (context == null) {
        return 0;
    }

    Resources.Theme curTheme = context.getTheme();
    if (curTheme == null) {
        return 0;
    }

    TypedArray att = curTheme.obtainStyledAttributes(RES_IDS_ACTION_BAR_SIZE);
    if (att == null) {
        return 0;
    }

    float size = att.getDimension(0, 0);
    att.recycle();
    return (int) size;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.