Как получить путь к файлу макета XML?

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

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

2 ответа

Решение

Вы можете добавить скрытый вид текста с соответствующими именами папок в 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`

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

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

Другие вопросы по тегам