2012-07-03 57 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

您可以在XML中添加一個隱藏的文本視圖與相應的文件夾名稱
獲取文本視圖中的字符串由

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

確保文本視圖的所有ID是相同 例

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

是的,這是我現在使用的技巧。這很難,因爲您必須手動將文本硬編碼到每個TextFile中。看來這是迄今爲止唯一的解決方案 – sandalone

1

您可以致電Activity.getResources().getConfiguration() WHI ch會給你當前Configuration - 看文檔,你可以從那裏獲得大部分你需要的信息(即你需要orientationscreenLayout),對於屏幕密度你需要Activity.getResources().getDisplayMetrics()density字段。沒有辦法檢索我知道的實際佈局路徑。

UPD 嗯,看看這個:LayoutInflater.inflate() - 這是它是如何工作的內部,如果你深入挖掘 - 它要求通過到執行的實際通貨膨脹率一個本地方法,所以沒有運氣,但也許如果你使用xml解析器,你會發現一個辦法。從我的頭頂開始,您可以爲每個佈局添加評論,並將文件名稱加入其中。然後使用Activity.getResources()。getLayout(your_layout_id)來獲取xml解析器,然後使用解析器來獲取您的註釋 - 這樣您就可以確切地知道您剛纔訪問的文件。

+0

因此,唯一的方法就是以前的方式 - 將資源目錄的名稱編入TextView?!這太糟糕了。 – sandalone

+0

查看我在答案中的更新,我對如何知道你訪問哪個佈局文件有了另一種想法。 –

+0

感謝您的努力,但是如果您知道我的意思,看起來工作太多了。 – sandalone