অ্যান্ড্রয়েড ফাংশনটি View.setPadding(int left, int top, int right, int bottom)
কেবলমাত্র পিক্সে মান গ্রহণ করে তবে আমি ডিপিতে প্যাডিং সেট করতে চাই। এটি প্রায় কোন উপায় আছে কি?
উত্তর:
সোজা কোড
int padding_in_dp = 6; // 6 dps
final float scale = getResources().getDisplayMetrics().density;
int padding_in_px = (int) (padding_in_dp * scale + 0.5f);
getResources()
এটি একটি ক্রিয়াকলাপ যা কোনও ক্রিয়াকলাপ দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত, তবে আমি কাস্টম তালিকাভিউ অ্যাডাপ্টারে এই লাইনগুলি ব্যবহার করার চেষ্টা করছি। আমি যদি কল না করতে পারি তবে আমি কি করতে পারি এমন কোনও উপায় আছে getResources()
?
আপনি যদি এক্সএমএল ফাইলে মাত্রা (ডিপি বা যাই হোক না কেন) সংজ্ঞায়িত করেন (যা যাইহোক ভাল, কমপক্ষে বেশিরভাগ ক্ষেত্রে) তবে আপনি এই কোডটি ব্যবহার করে এর পিক্সেল মান পেতে পারেন:
context.getResources().getDimensionPixelSize(R.dimen.your_dimension_name)
প্রোগ্রামটিমেটিকভাবে ডিপিতে মান রূপান্তর করার আরও ভাল উপায় রয়েছে:
int value = 200;
int dpValue = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
value,
context.getResources().getDisplayMetrics());
তারপরে dpValue
আপনার পদ্ধতিতে প্রয়োগ করুন, উদাহরণস্বরূপ:setPadding(dpValue,dpValue,dpValue,dpValue);
আপনি নির্দিষ্ট ডিপিআই মানের জন্য পিক্সেল গণনা করতে পারেন: http://forum.xda-developers.com/showpost.php?p=6284958&postcount=31
আমারও একই সমস্যা আমি খুঁজে পাওয়া একমাত্র সমাধান (এটি আপনাকে সত্যিই সাহায্য করবে না :)) এটি এক্সএমএল ফাইলে সেট করা।
আপনি যদি কোডটি থেকে ঘনত্ব পেতে পারেন তবে আপনি রূপান্তরটি ব্যবহার করতে পারেন: "পিক্সেলের স্ক্রিনে ডিপ ইউনিট রূপান্তর সহজ: পিক্সেল = ডিপস * (ঘনত্ব / 160)"। ( http://developer.android.com/guide/practices/screens_support.html থেকে )
সম্পাদনা করুন: আপনি পর্দার ঘনত্ব পেতে পারেন: http://developer.android.com/references/android/util/DisplayMetrics.html#densityDpi