Почему мое приложение вылетает, когда я помещаю значение для android: ems в измерения .xml? - PullRequest
0 голосов
/ 26 июня 2019

Я начинаю с Android и пытаюсь поместить все свои измерения в измерения. Я попробовал тот же подход для android:ems, но он вызывает сбой приложения.

Я подумал, что мог бы использовать ресурсы измерений для значений ems. Таким образом, я могу получить все значения ems в одном файле.

Вот код макета:

        <EditText
            android:id="@+id/editName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/textContact"
            android:imeOptions="actionNext"
            android:inputType="textCapWords"
            android:ems="@dimen/act_cont_editName_ems">
            <requestFocus/>
        </EditText>

А вот код в измерениях. Xml

<dimen name="act_cont_editName_ems">14</dimen>

Однако приложение работает правильно только при использовании android:ems="14"

Полагаю, файл ресурсов Dimensions предназначен только для значений dp и sp, не уверен. Если да, есть ли другой способ сохранить все значения ems в файле ресурсов?

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Все измерения, сконфигурированные в файле измерения.xml, должны иметь единицы измерения, а в файле измерения.xml есть шесть поддерживаемых единиц измерения.

Обычно используемыми единицами измерения являются sp (независимые от масштаба пиксели), dp (независимые от плотности пикселей), px (пиксельные пиксели), а также поддержка в (дюймах), мм (миллиметрах) и pt (указывает на72 DPI).

Для ссылки на определенные выше размеры в xml, вы можете использовать @ dimension / sizeA.Чтобы сослаться на определенные выше измерения в вашем коде, вы можете использовать getResources().getDimension(R.dimen.sizeB);

Однако в макете вы часто будете использовать некоторые постоянные значения без единиц измерения, такие как установка значения веса каждого потомка вLinearLayout (android: layout_weight) и установка кратного межстрочного интервала (android: lineSpacingMultiplier) в TextView.Эти значения не могут быть сохранены в измерениях. Xml с помощью прямого определения следующим образом без единицы измерения.

<dimen name="sizeD">18</dimen>
<dimen name="sizeE">5.5</dimen>

Сохранение значения без единицы измерения в измерениях. Xml

Для сохранениязначение без единицы измерения в sizes.xml, вы можете определить его в следующем формате.

<item name="text_line_spacing" type="dimen" format="float">1.2</item>
0 голосов
/ 26 июня 2019

Размеры не могут прочитать значение без специального атрибута. Подробнее здесь: https://developer.android.com/guide/topics/resources/more-resources#Dimension

Вы можете сохранить значение ems в xml

...