有時 Intellij IDEA 在更新過後
或是沒有任何原因的出現 cannot resolve symbol 錯誤
但 Class 是確定存在的
此時解決的辦法就是到 File -> Invalidate Caches / Restart...
但要注意的是本地的檔案修改紀錄會完全消失
有時 Intellij IDEA 在更新過後
或是沒有任何原因的出現 cannot resolve symbol 錯誤
但 Class 是確定存在的
此時解決的辦法就是到 File -> Invalidate Caches / Restart...
但要注意的是本地的檔案修改紀錄會完全消失
當專案內有設定 Websocket 相關的設定時
啟動JUnit時會發生 No suitable default RequestUpgradeStrategy found 錯誤
這是因為一般進行測試時並不會依賴於一個執行中的Tomcat Server
因此當 Websocket 設定讀取時 DefaultHandshakeHandler 會嘗試尋找 Server 的相關 class 導致錯誤
此時只要在測試階段加入以下嵌入式的 Tomcat Library 即可
<!-- Libraries for testing Websocket --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>8.0.8</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> <version>8.0.8</version> <scope>test</scope> </dependency>
若出現中文顯示為亂碼的情形
可直接在 pom.xml 加入編碼設定即可
<!-- Surefire test plugin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.17</version> <!-- 預防使用 Maven test 時中文顯示為亂碼 --> <configuration> <argLine>-Dfile.encoding=UTF-8</argLine> </configuration> </plugin>
在具有輸入介面時
Android 會自動跳出虛擬鍵盤給使用者輸入
但有時卻不會自動隱藏
或是有時我們需要手動隱藏虛擬鍵盤
就可以使用以下方式
顯示虛擬鍵盤使用方式詳見此篇介紹
// 取得鍵盤管理物件 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // 隱藏指定 view 的虛擬鍵盤, 通常會是 EditText imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
若直接使用 background 屬性修改按鈕等物件的背景顏色時通常無法保留點擊效果
如 android:background="#333333" 雖然修改了背景顏色
點擊觸發的預設動畫卻也跟著不見了
但其實是有辦法可以保留並自訂點擊特效的顏色
不論是背景顏色還是點擊效果的顏色都可以修改
方法就是將以下 xml 設定新增到 drawable 目錄底下即可
套用方式則是修改 background 屬性值
android:background="@drawable/YOUR_DRAWABLE_FILE_NAME"
我們先看 API 21 以上的版本修改方式
新增一個 drawable 的 Resource
並將內容修改為以下 xml 格式
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/main_login_button_ripple"> <item android:drawable="@color/main_login_button_background"/> </ripple>
@color/main_login_button_ripple 為點擊後效果的顏色 可自行在 color.xml 設定
@color/main_login_button_background 為按鈕背景顏色 可自行在 color.xml 設定
API 20 以下的版本則要使用以下格式的 xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/main_login_button_ripple" android:state_pressed="true"/> <item android:drawable="@color/main_login_button_ripple" android:state_focused="true"/> <item android:drawable="@color/main_login_button_background"/> </selector>
@color/main_login_button_ripple 為點擊後效果的顏色 可自行在 color.xml 設定
@color/main_login_button_background 為按鈕背景顏色 可自行在 color.xml 設定
所以其實就是自訂兩個 color 參數
分別給背景與特效使用即可
當然此方法也可以自訂背景的形狀 例如加上圓角
方法跟 layer-list 相同
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/fav_item_ripple"> <item> <shape> <solid android:color="@color/fav_item_background"></solid> <corners android:radius="10px"></corners> </shape> </item> </ripple>
當我們在同一個 activity 內需要跳出一個小型的 layout 供使用者操作時
如輸入方塊、提示、顯示圖片
在此若要同時遮蔽上一層 layout 的點擊狀態
我們就需要做一個滿版的 layout
並在 layout 上加入 clickable="true" 這個屬性
就可以遮蔽上一層 layout 內的所有點擊事件了
<RelativeLayout android:id="@+id/articleContentCommentHolder" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#99000000" android:visibility="gone" android:alpha="0" android:clickable="true"> </RelativeLayout>