2015-10-17 1 views
0

Я писал приложение для Android. Я в основном создал следующий dimen ресурс:Почему ресурс dimen непоследовательный и как получить правильное значение?

<dimen name="button_text_size">11pt</dimen> 

И я использую его как в моем XML и Java код, чтобы создать ButtonTextView и какой размер текста 11pt. Вот как я сделал это:

XML

<Button 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:textSize="@dimen/button_text_size" 
     android:text="secret!" 
     android:layout_margin="@dimen/button_margin" 
     android:background="secret!" 
     android:layout_weight="1" 
     android:onClick="secret!"/> 

Java код

TextView text = new TextView (this); 
     text.setLayoutParams (new LinearLayout.LayoutParams (0, ViewGroup.LayoutParams.WRAP_CONTENT, 3)); 
     text.setText (secret); 
     text.setTextSize (getResources().getDimension (R.dimen.button_text_size)); 

В теории, текст двух взглядов должны быть одинакового размера. Но размер текста в текстовом виде кажется большим! Я не знаю, почему это происходит. Наверное, это из-за некоторых проблем с единицами, но что на самом деле происходит? Как получить правильно значения?

ответ

2

попробовать это

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.button_text_size)); 

и лучше использовать зр («масштабируется пиксель»), как размер текста в соответствии с андроида документации http://developer.android.com/intl/es/reference/android/widget/Button.html

+0

Еще один вопрос, если я использую sp, могу ли я использовать этот метод в своем вопросе? Я имею в виду перегрузку setTextSize (float). – Sweeper

+0

да, вы можете использовать метод setTextSize или хотите спросить что-нибудь еще? – Pavan

+1

Спасибо за ваш ответ! – Sweeper

1

Использование dp or dip вместо pt

<dimen name="button_text_size">11dp</dimen> 
+1

Хотя я не знаю много о единиц, я уверен, что dp не равно pt. Могу ли я продолжать использовать pt? – Sweeper

+0

@Sweeper Для лучшего подхода Вы переключаетесь на использование 'dp' –

+0

http://developer.android.com/intl/es/reference/android/widget/TextView.html#attr_android:textSize –

0

др/провал: Плотность пикселей независимой - Абстрактный блок, который основан на физической плотности экрана. Эти единицы относятся к экрану 160 dpi (точек на дюйм), на котором 1dp примерно равно 1px. Когда работает на экране с более высокой плотностью, количество пикселей, используемых для рисования 1dp, масштабируется в соответствии с коэффициентом, соответствующим для экрана. Аналогично, когда на экране с более низкой плотностью уменьшается количество пикселей, используемых для 1dp.

С другой стороны

PT: Очки - 1/72 дюйма на основе физического размера экрана.


рх: Пиксели - соответствует фактическим пикселей на экране. Этот блок измерения не рекомендуется, поскольку фактическое представление может варьироваться от через устройства;

Так пта и точки будут меняться экран к экрану в то время как дп **/погружение будет управлять в соответствии с экраном. ** .. если вы хотите последовательного размер через другой экран, чем идти на др/купании

более подробную информацию по РАЗМЕРОВ refer
поэтому переход от 11pt к 11dp в XML, это поможет
Но динамически он считается плавающим значение с точки зрения пикс ... так что дерзайте решения обеспечивают по Павана, как и в

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.button_text_size)); 

Либо по одному из приведенных ниже значений.

textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP,getResources().getDimension(R.dimen.button_text_size)); 

textView.setTextSize(TypedValue.COMPLEX_UNIT_SP,getResources().getDimension(R.dimen.button_text_size)); 
Смежные вопросы