ভিউ.সেটপ্যাডিংটি কেবলমাত্র পিক্সে গ্রহণ করে, কীভাবে ডিপি-তে সেটপ্যাডিং করা যায়?


94

অ্যান্ড্রয়েড ফাংশনটি View.setPadding(int left, int top, int right, int bottom)কেবলমাত্র পিক্সে মান গ্রহণ করে তবে আমি ডিপিতে প্যাডিং সেট করতে চাই। এটি প্রায় কোন উপায় আছে কি?

উত্তর:


186

সোজা কোড

    int padding_in_dp = 6;  // 6 dps
    final float scale = getResources().getDisplayMetrics().density;
    int padding_in_px = (int) (padding_in_dp * scale + 0.5f);

4
হাই, আমি একটি প্রশ্ন আছে। এই সূত্রটি কি কেবল প্যাডিং বা অন্য কোনও কিছুর জন্য ব্যবহৃত হয়? যেমন একটি আয়তক্ষেত্রের মার্জিন বা ম্লানত্ব?
পান্না

4
এটি ডিপি ইউনিটকে পিক্সেল ইউনিটে রূপান্তর করার সূত্র । আপনি এটি যে কোনও জায়গায় ব্যবহার করতে পারেন
লবিব পানামপুল্লান

4
আমি ধরে নিই যে getResources()এটি একটি ক্রিয়াকলাপ যা কোনও ক্রিয়াকলাপ দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত, তবে আমি কাস্টম তালিকাভিউ অ্যাডাপ্টারে এই লাইনগুলি ব্যবহার করার চেষ্টা করছি। আমি যদি কল না করতে পারি তবে আমি কি করতে পারি এমন কোনও উপায় আছে getResources()?
মাইক ব্যাকস্টার 8

4
আপনার অ্যাডাপ্টার থেকে শুধু getContext ()। GetRes स्त्रोत ()। GetDisplayMetrics ()। ঘনত্ব;
স্টিভ জি।

4
"+ 0.5f" এর জন্য কোথাও কোনও ব্যাখ্যা আছে?
জাভিয়ার এল।

100

আপনি যদি এক্সএমএল ফাইলে মাত্রা (ডিপি বা যাই হোক না কেন) সংজ্ঞায়িত করেন (যা যাইহোক ভাল, কমপক্ষে বেশিরভাগ ক্ষেত্রে) তবে আপনি এই কোডটি ব্যবহার করে এর পিক্সেল মান পেতে পারেন:

context.getResources().getDimensionPixelSize(R.dimen.your_dimension_name)

3

প্রোগ্রামটিমেটিকভাবে ডিপিতে মান রূপান্তর করার আরও ভাল উপায় রয়েছে:

int value = 200;
int dpValue = (int) TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP,
            value,        
            context.getResources().getDisplayMetrics());

তারপরে dpValueআপনার পদ্ধতিতে প্রয়োগ করুন, উদাহরণস্বরূপ:setPadding(dpValue,dpValue,dpValue,dpValue);



0

আমারও একই সমস্যা আমি খুঁজে পাওয়া একমাত্র সমাধান (এটি আপনাকে সত্যিই সাহায্য করবে না :)) এটি এক্সএমএল ফাইলে সেট করা।

আপনি যদি কোডটি থেকে ঘনত্ব পেতে পারেন তবে আপনি রূপান্তরটি ব্যবহার করতে পারেন: "পিক্সেলের স্ক্রিনে ডিপ ইউনিট রূপান্তর সহজ: পিক্সেল = ডিপস * (ঘনত্ব / 160)"। ( http://developer.android.com/guide/practices/screens_support.html থেকে )

সম্পাদনা করুন: আপনি পর্দার ঘনত্ব পেতে পারেন: http://developer.android.com/references/android/util/DisplayMetrics.html#densityDpi

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