中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android - ToDoList(定制樣式) 詳解

發布時間:2020-04-24 02:03:17 來源:網絡 閱讀:592 作者:morndragon 欄目:移動開發

ToDoList(定制樣式) 詳解


本文地址: http://blog.csdn.net/caroline_wendy/article/details/21330733


Android允許從已有的視圖工具箱(Widget Tool Box)派生子類 或 實現自己的視圖控件;

通過重寫事件處理程序onDraw()方法, 但是仍然回調超類(super)的方法, 可以對視圖進行定制, 而不必實心它的功能;

前置步驟參見: http://blog.csdn.net/caroline_wendy/article/details/21246963


步驟: 

1. 創建ToDoListItemView類, 定制Item項的外觀:

位置: java->package->ToDoListItemView.java

package mzx.spike.todolist.app;  import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.widget.TextView;  /**  * Created by C.L.Wang on 14-3-16.  */ public class ToDoListItemView extends TextView{      private Paint marginPaint;     private Paint linePaint;     private int paperColor;     private float margin;      public ToDoListItemView (Context context, AttributeSet ats, int ds) {         super(context, ats, ds);         init();     }      public  ToDoListItemView (Context context) {         super(context);         init();     }      public ToDoListItemView (Context context, AttributeSet ats) {         super(context, ats);         init();     }      private void init() {          //獲得對資源列表的引用         Resources myResources = getResources();          marginPaint = new Paint(Paint.ANTI_ALIAS_FLAG);         marginPaint.setColor(myResources.getColor(R.color.notepad_margin));          linePaint = new Paint(Paint.ANTI_ALIAS_FLAG);         linePaint.setColor(myResources.getColor(R.color.notepad_lines));          paperColor = myResources.getColor(R.color.notepad_paper);         margin = myResources.getDimension(R.dimen.notepad_margin);     }      @Override     public void onDraw(Canvas canvas) {          canvas.drawColor(paperColor);          canvas.drawLine(0, 0, 0, getMeasuredHeight(), linePaint);         canvas.drawLine(0, getMeasuredHeight(), getMeasuredWidth(), getMeasuredHeight(), linePaint);          canvas.drawLine(margin, 0, margin, getMeasuredHeight(), marginPaint);          canvas.save();         canvas.translate(margin, 0);          super.onDraw(canvas);         canvas.restore();     }  } 

詳解:

1. 繼承TextView類, 是文本視圖的定制;

2. 重載構造函數, 包含三個參數的重載版本,回調超類(super)之后,初始化資源私有變量(init);

3. 在Init()中, 獲得資源列表的引用(getResource), 將資源文件轉換為可以調用的參數(myResource.getXXX), 初始化資源私有變量;

4. 重寫(Override)OnDraw方法, 設置顏色, 畫線, 指定寫入格式;

5. canvas.translate(), 使輸出文件, 后移margin距離;


2. 創建顏色(colors)資源文件

位置: res->values->colors.xml

<?xml version="1.0" encoding="utf-8"?> <resources>     <color name="notepad_paper">#EEF8E0A0</color>     <color name="notepad_lines">#FF0000FF</color>     <color name="notepad_margin">#90FF0000</color>     <color name="notepad_text">#AA0000FF</color> </resources>

顏色資源文件, 以color標簽, Android Studio會顯示顏色;


3. 修改尺寸(dimen)資源文件:

位置: res->values->dimen.xml

<resources>     <!-- Default screen margins, per the Android Design guidelines. -->     <dimen name="activity_horizontal_margin">16dp</dimen>     <dimen name="activity_vertical_margin">16dp</dimen>     <dimen name="notepad_margin">30dp</dimen> </resources>

補充即可;


4. 創建todolist_item布局文件:

位置: res->layout->todolist_item.xml

<?xml version="1.0" encoding="utf-8"?>  <mzx.spike.todolist.app.ToDoListItemView     xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:padding="10dp"     android:scrollbars="vertical"     android:textColor="@color/notepad_text"     android:fadingEdge="vertical" />

詳解:

1. 標簽為類名, 即ToDoListItemView類, 重載了TextView的方法;

2. 設置相應的屬性標簽;


5. 修改適配器(Adapter), 使用定制的TextView:

位置: java->package->ToDoListActivity

......         int resID = R.layout.todolist_item;         //三個參數         aa = new ArrayAdapter<String>(this, resID, toDoItems);          toDoListFragment.setListAdapter(aa); ......

詳解:

找到資源文件的ID, 傳入適配器;


6. 執行程序:
代碼下載: http://download.csdn.net/detail/u012515223/7050371

Android - ToDoList(定制樣式) 詳解


Android - ToDoList(定制樣式) 詳解



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北安市| 陕西省| 武宣县| 察雅县| 合阳县| 确山县| 密山市| 昌黎县| 普格县| 嘉兴市| 四会市| 伊通| 高州市| 饶河县| 崇左市| 宁武县| 蒙城县| 松滋市| 宣汉县| 青河县| 交口县| 石景山区| 南城县| 惠来县| 丘北县| 永城市| 泸水县| 佛冈县| 孝昌县| 平顺县| 页游| 富平县| 青浦区| 达拉特旗| 兰坪| 濮阳市| 高邮市| 盐津县| 锡林郭勒盟| 侯马市| 上饶市|