Доступ к целым ресурсам в xml

Я прочитал это, когда нашел, что как получить доступ к целым ресурсам в классе java, но без документов для другого ресурса.

Вот ресурсы по res / values ​​/ integers.xml

<resources> <integer name="input_field_padding" >5</integer> </resources> 

Пытался получить доступ к input_field_padding в EditText.

 <EditText android:id="@+id/user_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="@integer/input_field_padding" /> 

Но я получил следующее исключение

 java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x10 

Возможно ли получить доступ к нему в другом файле ресурсов или я что-то упустил?

Solutions Collecting From Web of "Доступ к целым ресурсам в xml"

Наконец, я могу получить доступ к целочисленному ресурсу в java-коде и целочисленном значении как dimen в xml.

 <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="input_field_padding">20dip</dimen> <integer name="input_field_padding">20</integer> </resources> 

В файле xml: –

 <EditText android:id="@+id/user_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="@dimen/input_field_padding" /> 

В java-файле: –

 EditText mUsername = (EditText) this.findViewById(R.id.user_name); //int padding = this.getResources().getInteger(R.integer.input_field_padding); int padding = (int) this.getResources().getDimension(R.dimen.input_field_padding); mUsername.setPadding(padding, padding, padding, padding); 

Принятый ответ полностью неверен. Если не существует конкретной уникальной причины, вы никогда не должны использовать ресурс Integer для установки размеров заполнения. Не только в XML, но и в коде. Вот почему вы столкнулись с UnsupportedOperationException . Целочисленные ресурсы не масштабируются на основе DPI экранов. Это означает, что вы не получите последовательно разнесенное дополнение для всех устройств. Ресурсы Dimen автоматически изменят свое значение для вас. Ваш Java-код должен выглядеть так:

 EditText mUsername = (EditText) this.findViewById(R.id.user_name); int padding = (int) this.getResources().getDimension(R.dimen.input_field_padding); mUsername.setPadding(padding, padding, padding, padding); 

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

Подробнее здесь:
Независимость от плотности
Работа с XML-макетами

Также вы можете определить это так:

 <resources> <item name="text_line_spacing" format="integer" type="dimen">10</item> </resources> 

Формат = прилагаемый тип данных:

Float boolean fraction integer … и тип обозначает:

Тип = тип ресурса (ссылка на R.XXXXX.name):

Стиль цветной строки и т. Д. …

Доступ к нему нравится:

 Resources res = getResources(); int i= res.getInteger(R.dimen.int_value); 

Если вы берете ресурс Integer, тогда вам нужно взять R.Integer.yourintvalue таким образом

 int value=(int) contextG.getResources() .getDimension(R.integer.myvalue); 

Правильный способ доступа к целочисленному полю – использовать @integer/input_field_padding

В XML

  <EditText android:id="@+id/user_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="@dimen/input_field_padding" /> 

В JAVA

 R.integer.integer_name 

См. Этот http://developer.android.com/guide/topics/resources/more-resources.html#Integer .