今天要在 android:text 中填入 '@' 字元時 , 在編譯的時候出現這個錯過訊息訊息, 解決這問題就是在前面填入反斜線 ' \ ' 就解決問題了. android:text="\@123". :)
出現這個錯誤訊息是因為 @ 在 android xml 中是有意義的
Refer to:
http://stackoverflow.com/questions/8753431/at-the-beginning-of-edittext-value
2013年7月24日 星期三
2013年6月26日 星期三
解決 Export Signed Application Package... 出現 " ... is not translated in ..." 的問題
今天想嘗試執行 Export Signed Application Package...時,出現 "... is not translated in..."的 Fatal Error,如下圖所示:
而其實引起這個問題的原因與解法就寫在右邊的訊息視窗中,可以參考上面的圖示。而下面是我自己驗證過確實可以解決這個問題。
解法 一:
執行 Window -> Preferences,點選 Android -> Lint Error Checking,
將 Lint 的 Missing Translation 項目從 Fatal 改為 Warning. 如下圖所示:
[參考鏈結]
而其實引起這個問題的原因與解法就寫在右邊的訊息視窗中,可以參考上面的圖示。而下面是我自己驗證過確實可以解決這個問題。
解法 一:
執行 Window -> Preferences,點選 Android -> Lint Error Checking,
將 Lint 的 Missing Translation 項目從 Fatal 改為 Warning. 如下圖所示:
解法 二:
將 translatable="false" 加入倒出現錯誤訊息的字串中,如下圖所示:
[關鍵字]
Android is not translated in
- Lint: How to ignore “<key> is not translated in <language>” errors?
- Non-translatable Strings
- xxx is not translated in yyy, zzz 的解决方法
- 當遇到 Export Singed Application Package 出現 "is not translated" 的 error
如何新增 Android XML 檔案
在很多時候我們需要自己新增 Android XML 檔案,例如要支援多國語言、針對不同的螢幕大小、或者螢幕操作的方向 (port直向 / land 橫向)...等等的替代選擇性資源內容。
透過 ADT 的工具我們可以很簡單的建立新的 Android XML 檔案,方法如下:
2. 選擇要加入的資源型態:
3. 填入檔案名稱,這邊我們不需要填入副檔名,當建立後 ADT 會幫我加入。另外如果要建立替代選擇性資源,可按下圖的 Next 按鈕繼續設定裝置設定屬性。否則,直接按 Finish 即可在預設的資料夾(如: layout、value、drawable...etc. )內產生該檔案。
1-3. 步驟 2 的新增 Android XML 對話框的方式也可以透過點選專案,右鍵-> New-> Android XML File 來執行。
另外,如果你想要新增的是翻譯,則可以透過 Android Graphical Layout 來快速產生簡單的替代選擇性資源資料夾 (只能設定 Language 與 Region,無法設定其他條件 如 ldpi/mdpi 或者 port/land...etc.)與空的 strings.xml 檔案,實際做法請參考下圖:
透過 ADT 的工具我們可以很簡單的建立新的 Android XML 檔案,方法如下:
1. 點選工具列的按鈕,如下圖所示:
2. 選擇要加入的資源型態:
3. 填入檔案名稱,這邊我們不需要填入副檔名,當建立後 ADT 會幫我加入。另外如果要建立替代選擇性資源,可按下圖的 Next 按鈕繼續設定裝置設定屬性。否則,直接按 Finish 即可在預設的資料夾(如: layout、value、drawable...etc. )內產生該檔案。
1-2. 如果不點選工具列的按鈕,也可以透過點選專案,右鍵-> Android Tools -> New Resources File... 來叫出 步驟 2 的新增 Android XML 對話框。
1-3. 步驟 2 的新增 Android XML 對話框的方式也可以透過點選專案,右鍵-> New-> Android XML File 來執行。
另外,如果你想要新增的是翻譯,則可以透過 Android Graphical Layout 來快速產生簡單的替代選擇性資源資料夾 (只能設定 Language 與 Region,無法設定其他條件 如 ldpi/mdpi 或者 port/land...etc.)與空的 strings.xml 檔案,實際做法請參考下圖:
2013年6月20日 星期四
TextView - 顯示上下左右相反文字
想要在 TextView 中將文字上下左右相反顯示可以將 android:scaleX 與 android:scaleY 屬性設定為 -1f 即可,程式碼如下:
另外除了直接透過設定 xml 檔案來完成上下左右文字的顯示,你也可以用 setScaleX(float) 與 setScaleY(float) 方法在程式碼中做動態的設定。方法如下:
[參考連結]
http://www.javaworld.com.tw/jute/post/view?bid=26&id=309372
<textview android:id="@+id/tv" android:layout_height="wrap_content" android:layout_width="wrap_content" android:scalex="-1f" android:scaley="-1f" android:text="@string/hello_world"/>設定後的結果如下圖所示:
另外除了直接透過設定 xml 檔案來完成上下左右文字的顯示,你也可以用 setScaleX(float) 與 setScaleY(float) 方法在程式碼中做動態的設定。方法如下:
TextView tv = (TextView)findViewById(R.id.tv); tv.setScaleX(-1f); tv.setScaleY(-1f);
[參考連結]
http://www.javaworld.com.tw/jute/post/view?bid=26&id=309372
2013年6月12日 星期三
解決 Android Emulator 無法啟動的問題
今天想要透過 Android Virtual Device Manager 啟動 AVD,但是啟動的過程發生警告的訊息如下:
Starting emulator for AVD 'Android_4.0.3'
WARNING: Data partition already in use. Changes will not persist!
WARNING: SD Card image already in use: C:\Documents and
Settings\Josh\.android\avd\Android_4.0.3.avd/sdcard.img
ko:Snapshot storage already in use: C:\Documents and
Settings\Josh\.android\avd\Android_4.0.3.avd/snapshots.img
或者參考下圖
上網查了一些資料,也嘗試了一些方法但是目前唯一有效的就是在 "Using Eclipse for androidSDK, when I go to run, I get WARNING: Data partition already in use. Changes will not persist!" 看到的解決方法,就是刪除在 .android\avd\[your_device].avd 資料夾底下的所有
XXX.XXX.lock 的資料夾,請參考下面圖檔。 刪除後,模擬器終於又恢復作用囉。
Starting emulator for AVD 'Android_4.0.3'
WARNING: Data partition already in use. Changes will not persist!
WARNING: SD Card image already in use: C:\Documents and
Settings\Josh\.android\avd\Android_4.0.3.avd/sdcard.img
ko:Snapshot storage already in use: C:\Documents and
Settings\Josh\.android\avd\Android_4.0.3.avd/snapshots.img
或者參考下圖
上網查了一些資料,也嘗試了一些方法但是目前唯一有效的就是在 "Using Eclipse for androidSDK, when I go to run, I get WARNING: Data partition already in use. Changes will not persist!" 看到的解決方法,就是刪除在 .android\avd\[your_device].avd 資料夾底下的所有
XXX.XXX.lock 的資料夾,請參考下面圖檔。 刪除後,模擬器終於又恢復作用囉。
剛剛發現 Youtube 有教學影片 "SDK android emulator WARNING Data partition already in use Changes will not persist",如下:
2013年6月8日 星期六
ADT 設定 Preview All Screens 與 All Locales 查看所有Layout 與 語言的效果
當我們要開發多國語言或者給多個不同螢幕大小裝置的 App 時,我們可以先透過 設定 Preview All Locales 與 Preview All Screens 來查看其顯示的效果。設定後的結果請參考下面的圖示。
利用 ImageView background 與 src 來合併兩張小 icon
在某些情況下我們需要將兩張小 icon 合併來顯示成一張小icon。例如我們有很多 icons 而他們的背景圖示都一樣,只有中間的圖示不同,此時我們可以只準備一張背景圖示,另外準備其他不同的小圖示且其背景必須是 transparent 。一切準備好之後我們就可以設定利用background 與 src 屬性來設定圖示,來產生合併的效果,如下圖所示。
上面圖示的 layout_width 與 layout_height 都是指定 wrap_content,最右邊的為 ImageButton,另外兩個則為 ImageView。使用 wrap_content 時,其 ImageView 大小視 backgroud 或 src 圖示中何者為大。也就是說當你準備的src 大於 background image時,background 圖示有可能被 src 的圖示所掩蓋而無法看出效果。
另外 backgroud 與 scr的不同是, background 的圖示會根據 ImageView的大小做縮放,且不會保持原本圖示的比例,但是 src 則會保持 原圖的長寬比例做等比例的縮放。
如果你不想讓 src 做等比例縮放,可以而外設定 android:scaleType="center" ,其效果可以參考中間的小圖示。最左邊圖示只簡單的設定 background 與 src 的圖示,可以看到 src 的圖示被等比例縮放了。
[其他參考鏈結]
上面圖示的 layout_width 與 layout_height 都是指定 wrap_content,最右邊的為 ImageButton,另外兩個則為 ImageView。使用 wrap_content 時,其 ImageView 大小視 backgroud 或 src 圖示中何者為大。也就是說當你準備的src 大於 background image時,background 圖示有可能被 src 的圖示所掩蓋而無法看出效果。
另外 backgroud 與 scr的不同是, background 的圖示會根據 ImageView的大小做縮放,且不會保持原本圖示的比例,但是 src 則會保持 原圖的長寬比例做等比例的縮放。
如果你不想讓 src 做等比例縮放,可以而外設定 android:scaleType="center" ,其效果可以參考中間的小圖示。最左邊圖示只簡單的設定 background 與 src 的圖示,可以看到 src 的圖示被等比例縮放了。
[其他參考鏈結]
- ImageView.ScaleType
- 【android】scaleType属性与ImagView中图片的显示的关系
- [Android] ImageView.ScaleType设置图解
- Android学习笔记之ImageView
- How to show the image properly?
訂閱:
文章 (Atom)