2012-07-03 2 views
0

Мне нужно отобразить путь макета, используемый в setContentView(R.layout.main);. Так что если мобильный телефон normal-mdpi, мне нужно отобразить «Путь:/res/layout-normal-mdpi», или если мобильный телефон normal-hdpi, мне нужен текст «Путь:/res/layout-normal-hdpi» ,Как получить путь к файлу xml?

Мне в основном нужно знать, какой файл макета был загружен и его путь.

+0

что вам нужно для этого? – Macarse

+0

Необходимо выполнить определенную задачу. Я могу сделать это с помощью TextView с жестко заданным путем в каждом XML-ресурсе, но это способ замедлить работу. Мне нужно сделать это программно. – sandalone

ответ

2

Вы можете добавить Hidden Text View с соответствующими именами папок в XML
Получить строку в текстовом виде на

TextView path = (TextView)findViewbyid(R.id.hiddentextview); 
String s = path.gettext().tostring(); 

Убедитесь, что все идентификаторы из представления текста одинаковы Пример

if your xml is in `normal-mdpi` in hidden textview hard code `normal-mdpi` 
if your xml is in `large-mdpi` in hidden textview hard code `large-mdpi` 
+0

что такое 'путь'? Если я использую статический класс 'Path', я ничего не могу сделать. – sandalone

+0

Я отредактировал код для улучшения понимания – VenomVendor

+0

Да, это трюк, который я использую прямо сейчас. Это трудно, поскольку вам приходится вручную жестко кодировать текст в каждый текстовый файл. Кажется, что это единственное решение до сих пор – sandalone

1

Вы можете позвонить Activity.getResources().getConfiguration() WHI ch даст вам текущее Configuration - см. документ, вы можете получить большую часть необходимой вам информации (а именно, вы хотите, чтобы orientation и screenLayout), для плотности экрана вам понадобятся Activity.getResources().getDisplayMetrics() и поле density. Невозможно получить реальный путь макета, о котором я знаю.

UPD Хм, посмотрите на это: LayoutInflater.inflate() - это то, как он внутренне работает, если копнуть глубже - он вызывает до нативный метод, который делает фактическую инфляцию, так не повезло, но, может быть, если вы соскучитесь с синтаксическим анализатором xml, вы найдете способ сделать это. С верхней части головы вы можете добавить комментарий к каждому макету и поместить в него имя файла. И затем используйте Activity.getResources(). GetLayout (your_layout_id), чтобы получить синтаксический анализатор xml, а затем используйте синтаксический анализатор, чтобы получить свой комментарий - таким образом вы точно узнаете, к какому файлу вы просто обращались.

+0

Итак, единственный способ - это старый способ - привязать имя каталога ресурсов в TextView ?! Слишком плохо для этого. – sandalone

+0

Проверьте мое обновление в ответе, я получил еще одну идею о том, как вы можете узнать, какой файл макета вы получаете. –

+0

Спасибо за ваши усилия, но кажется, что слишком много работы, чтобы ничего не получить, если вы знаете, что я имею в виду – sandalone

Смежные вопросы