XML dp qiymati dp (dip) dan farq qiladi.

Mening XML-da, buni menda TextView bor:

android:textSize="18dp" (yes I know dp is not preferable for text, but that's beside the point)

Men dasturiy jihatdan yaratgan boshqa TextViews-larim bor, va men TextSize ni quyidagicha o'rnatmoqchiman:

view.TextSize = TypedValue.ApplyDimension(ComplexUnitType.Dip, 18, Resources.DisplayMetrics);

Ammo, keyingi matn o'lchami (dasturiy jihatdan yaratilgan) xml versiyasidan ancha katta ko'rinadi. Nima uchun men hayronman? :)

1
qiymatimni qiymat bilan aniqlash dimens.xml faylida.
qo'shib qo'ydi muallif Chetan Joshi, manba
qiymatimni qiymat bilan aniqlash dimens.xml faylida.
qo'shib qo'ydi muallif Chetan Joshi, manba

9 javoblar

SetTextSize (TypedValue.COMPLEX_UNIT_PX, textSize) dan foydalaning; chunki getDimension metodining hujjatlari tegishli o'lchov bilan ko'paytiriladigan Resurs o'lchovi qiymatini qaytarishini bildiradi. men aniq hisoblash mutlaq px qiymati deb tushunaman.

Ya'ni:

    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.text_size_small));
0
qo'shib qo'ydi
Oh, to'g'ri, men noto'g'ri tushundim. Albatta, piksel qiymati kerak :)
qo'shib qo'ydi muallif HelloWorld, manba

SetTextSize (TypedValue.COMPLEX_UNIT_PX, textSize) dan foydalaning; chunki getDimension metodining hujjatlari tegishli o'lchov bilan ko'paytiriladigan Resurs o'lchovi qiymatini qaytarishini bildiradi. men aniq hisoblash mutlaq px qiymati deb tushunaman.

Ya'ni:

    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.text_size_small));
0
qo'shib qo'ydi
Oh, to'g'ri, men noto'g'ri tushundim. Albatta, piksel qiymati kerak :)
qo'shib qo'ydi muallif HelloWorld, manba

SetTextSize (TypedValue.COMPLEX_UNIT_PX, textSize) dan foydalaning; chunki getDimension metodining hujjatlari tegishli o'lchov bilan ko'paytiriladigan Resurs o'lchovi qiymatini qaytarishini bildiradi. men aniq hisoblash mutlaq px qiymati deb tushunaman.

Ya'ni:

    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.text_size_small));
0
qo'shib qo'ydi
Oh, to'g'ri, men noto'g'ri tushundim. Albatta, piksel qiymati kerak :)
qo'shib qo'ydi muallif HelloWorld, manba

Buni ko'ring

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14);

Or

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font));
0
qo'shib qo'ydi
Men chindan ham dp dan foydalanishni va to'liq 18dp olishni istayman, lekin yuqoridagi narsalarga ishonmaymanmi?
qo'shib qo'ydi muallif HelloWorld, manba

Buni ko'ring

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14);

Or

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font));
0
qo'shib qo'ydi
Men chindan ham dp dan foydalanishni va to'liq 18dp olishni istayman, lekin yuqoridagi narsalarga ishonmaymanmi?
qo'shib qo'ydi muallif HelloWorld, manba

Buni ko'ring

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14);

Or

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font));
0
qo'shib qo'ydi
Men chindan ham dp dan foydalanishni va to'liq 18dp olishni istayman, lekin yuqoridagi narsalarga ishonmaymanmi?
qo'shib qo'ydi muallif HelloWorld, manba

Qiymat papkasida o'lchamdagi matn hajmini e'lon qilishingiz kerak va qiymatni oling va TextView kodini quyidagi kodga o'rnating.

dimens.xml


    <!-- Default screen margins, per the Android Design guidelines. -->
    18dp


Kod kodi kabi dimens.xml dan text_size ni oling:

textView.setTextSize(getResources().getDimension(R.dimen.text_size));

// Quyidagi satr pikseldagi dp qiymatini qaytaradi.

int text_size = getResources().getDimension(R.dimen.text_size);
0
qo'shib qo'ydi
Yuqorida ko'rsatilgan kod kabi dp qiymatini olganda, biz dimens.xml da e'lon qilgan x dp ning pikselli qiymatini qaytaradi.
qo'shib qo'ydi muallif Chetan Joshi, manba
ish vaqtida Java kodida 18 dp qiymatini bilishingiz kerak
qo'shib qo'ydi muallif Chetan Joshi, manba
18dp men xohlaganim emas. X dp faqat ish vaqti davomida ma'lum bo'lsa nima bo'ladi? Masalan, kodda?
qo'shib qo'ydi muallif HelloWorld, manba

Qiymat papkasida o'lchamdagi matn hajmini e'lon qilishingiz kerak va qiymatni oling va TextView kodini quyidagi kodga o'rnating.

dimens.xml


    <!-- Default screen margins, per the Android Design guidelines. -->
    18dp


Kod kodi kabi dimens.xml dan text_size ni oling:

textView.setTextSize(getResources().getDimension(R.dimen.text_size));

// Quyidagi satr pikseldagi dp qiymatini qaytaradi.

int text_size = getResources().getDimension(R.dimen.text_size);
0
qo'shib qo'ydi
Yuqorida ko'rsatilgan kod kabi dp qiymatini olganda, biz dimens.xml da e'lon qilgan x dp ning pikselli qiymatini qaytaradi.
qo'shib qo'ydi muallif Chetan Joshi, manba
ish vaqtida Java kodida 18 dp qiymatini bilishingiz kerak
qo'shib qo'ydi muallif Chetan Joshi, manba
18dp men xohlaganim emas. X dp faqat ish vaqti davomida ma'lum bo'lsa nima bo'ladi? Masalan, kodda?
qo'shib qo'ydi muallif HelloWorld, manba

Qiymat papkasida o'lchamdagi matn hajmini e'lon qilishingiz kerak va qiymatni oling va TextView kodini quyidagi kodga o'rnating.

dimens.xml


    <!-- Default screen margins, per the Android Design guidelines. -->
    18dp


Kod kodi kabi dimens.xml dan text_size ni oling:

textView.setTextSize(getResources().getDimension(R.dimen.text_size));

// Quyidagi satr pikseldagi dp qiymatini qaytaradi.

int text_size = getResources().getDimension(R.dimen.text_size);
0
qo'shib qo'ydi
Yuqorida ko'rsatilgan kod kabi dp qiymatini olganda, biz dimens.xml da e'lon qilgan x dp ning pikselli qiymatini qaytaradi.
qo'shib qo'ydi muallif Chetan Joshi, manba
ish vaqtida Java kodida 18 dp qiymatini bilishingiz kerak
qo'shib qo'ydi muallif Chetan Joshi, manba
18dp men xohlaganim emas. X dp faqat ish vaqti davomida ma'lum bo'lsa nima bo'ladi? Masalan, kodda?
qo'shib qo'ydi muallif HelloWorld, manba