1. 程式人生 > >安卓小技巧分享

安卓小技巧分享

今年從4月份做到11月底,與團隊夥伴合作開發了兩款公司內部員工工作時使用的APP,專案做得挺久的,做到最後也感覺好累,抗壓能力還是不足吧,還需要多多鍛鍊。在開發的過程中,發現了許多小技巧,並記錄下來,最近幾天都不忙,就整理分享出來吧。

UI篇

  • 自定義View動態測量寬高時,可以呼叫requestLayout(),讓父佈局再次呼叫onMeasure()與onLayout()方法,重新測量自定義view的大小和位置。

  • 在xml中,給某個控制元件加上android:clickable=true屬性,而不用在java程式碼中設定一個監聽器,就可以預覽控制元件的點選效果(比如按鈕點選顏色的變換)。

  • ViewPager內巢狀ScrollView衝突,最後造成ViewPager裡面的內容不能顯示。解決:在結點新增屬性android:fillViewport=”true”

  • 使用notifyDataSetChanged()實時更新列表資料。實時更新?這是什麼意思?就拿ListView作為例子,假如ListView中的每一個條目都有三個選項,“√”、“O”、“X”,只能選擇一項作為該條目的結果。一開始可能很多人的做法就是:點選,獲取點選的View,更改一下選中顏色,之後更改一下上次點選的View的顏色(取消選中狀態)。這樣未免太麻煩了。便捷的做法就是:點選對應view,獲取點選列表的position和view對應的型別(“√”、“O”、“X”),然後直接獲取到資料mList對應position的資料,將選中狀態set進資料物件,最後呼叫Adapter的notifyDataSetChanged()方法即可。

  • ListView條目背景沒有設定的時候,會出現預設點選效果,取消方法:android:listSelector=”@color/transparent”

  • 使用android:gravity=”center”使TextView文字居中

  • 一個View放在ScrollView中,如何判斷該view是否可以滑動?

public boolean canScroll() {
 ScrollView sv = (ScrollView)findViewById(R.id.dtv_source_info_more_sv);
    View child = sv.getChildAt(0);
    if
(child != null) { int childHeight = child.getHeight(); return sv.getHeight() < childHeight; } return false; }
  • 文字的繪製是從文字的baseLine開始繪製的,而不是文字的左上角處。這個在寫自定義View調整文字擺放位置時需要注意的一塊。

這裡寫圖片描述

  • 在onClick中使用v instanceof TextView來區分TextView和Button響應的v控制元件,最終是無效,Button是TextView的子類

未完待續