Android: Как установить переменные XML dimen программно
в моих XML-файлах макета я ссылаюсь на множество параметров через отдельные файлы с именем dimens.xml
.
например, dimens.xml
содержит такие параметры:
<dimen name="textSize_normal">20dp</dimen>
<dimen name="buttonTextSize_normal">15dp</dimen>
<dimen name="editTextSize_normal">17dp</dimen>
<dimen name="buttonHeight_normal">37dp</dimen>
<dimen name="margin_normal">5dp</dimen>
и в моем main.xml
, например, я бы установил размер текста для TextView
делая что-то вроде этого:
android:textSize="@dimen/editTextSize_normal"
он отлично работает.
теперь, мои вопросы, можно ли установить значения для dimen
переменные в my программно от моей основной деятельности? То, что я пытаюсь сделать, это получить размер экрана, и установить, например,textSize
на основе доли высоты экрана, так что он легко адаптируется к любому размеру экрана. Я все это выяснил, мне просто нужна ваша помощь, чтобы выяснить, как установить dimen
переменные в своем коде.
4 ответов
теперь, мои вопросы, можно ли установить значения для переменных dimen в моем dimen.xml-файл программно из моей основной деятельности?
нет.
то, что я пытаюсь сделать, это получить размер экрана и установить, например, размер текста на основе доли высоты экрана, чтобы он легко адаптировался к любому размеру экрана.
игнорируя, что это странный подход к пользовательскому интерфейсу, способ сделать это - удалить android:textSize
атрибуты и изменить размер текста во время выполнения, используя setTextSize()
в Java.
Я все это выяснил, мне просто нужна ваша помощь, чтобы выяснить, как установить переменные dimen в моем коде.
вы не "устанавливаете переменные dimen". Вы применяете свои вычисления к виджетам через сеттеры, такие как setTextSize()
.
нет, вы не можете редактировать файлы ресурсов во время выполнения, они уже скомпилированы и сгенерированы.
вы должны использовать независимые от плотности пиксели во всех ваших ресурсах, чтобы размеры могли адаптироваться к размеру экрана. Вам не нужно вычислять эти значения во время выполнения. Если вы хотите иметь другой макет для разных размеров экрана, рассмотрите возможность использования нескольких файлов ресурсов.
читать данное руководство.
Я думаю, что вы имеете в виду, чтобы изменить размер в зависимости от размера экрана устройства.. что можно сделать, создав несколько dimens.xml-файлы в папках, таких как values-hdpi, values-xhdpi, values-xxhdpi, values-mdpi,.. а затем во время выполнения компилятор выберет dimen в зависимости от dpi я на самом деле не пробовал это раньше, но я прочитал его здесь.. взгляните на это: http://developer.android.com/guide/practices/screens_support.html#qualifiers