国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中自定義ImageView添加文字設置按下效果詳解

2019-12-12 02:12:19
字體:
來源:轉載
供稿:網友

前言

我們在上一篇文章教大家使用ImageView+TextView的組合自定義控件...可能在開發中你還需要其他功能,例如:按下效果,可以在代碼中改變字體顏色,更換圖片等等...

首先上效果圖,看看是否是你需要的


效果圖

下面開始擼代碼

MyImageTextView.java

public class MyImageTextView extends LinearLayout { private ImageView mImageView = null; private TextView mTextView = null; private int imageId, pressImageId; private int textId, textColorId, textTopId, pressTextColorId; public MyImageTextView(Context context) {  this(context, null); } public MyImageTextView(Context context, @Nullable AttributeSet attrs) {  this(context, attrs, 0); } public MyImageTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {  super(context, attrs, defStyleAttr);  this.setOrientation(LinearLayout.VERTICAL);//設置垂直排序  this.setGravity(Gravity.CENTER);//設置居中  if (mImageView == null) {   mImageView = new ImageView(context);  }  if (mTextView == null) {   mTextView = new TextView(context);  }  if (attrs == null)   return;  int count = attrs.getAttributeCount();  for (int i = 0; i < count; i++) {   String attrName = attrs.getAttributeName(i);//獲取屬性名稱   //根據屬性獲取資源ID   switch (attrName) {    //顯示的圖片    case "image":     imageId = attrs.getAttributeResourceValue(i, 0);     break;    //按下時顯示的圖片    case "pressImage":     pressImageId = attrs.getAttributeResourceValue(i, 0);     break;    //顯示的文字    case "text":     textId = attrs.getAttributeResourceValue(i, 0);     break;    //設置文字顏色    case "textColor":     textColorId = attrs.getAttributeResourceValue(i, 0);     break;    //設置文字距離上面圖片的距離    case "textTop":     textTopId = attrs.getAttributeResourceValue(i, 0);     break;    //按下時顯示的文字顏色    case "pressTextColor":     pressTextColorId = attrs.getAttributeResourceValue(i, 0);     break;   }  }  init(); } /**  * 初始化狀態  */ private void init() {  this.setText(textId);  mTextView.setGravity(Gravity.CENTER);//字體居中  this.setTextColor(textColorId);  this.setTextPaddingTop(textTopId);  this.setImgResource(imageId);  addView(mImageView);//將圖片加入  addView(mTextView);//將文字加入 } @Override public boolean onTouchEvent(MotionEvent event) {  int action = event.getAction();  switch (action) {   //按下   case MotionEvent.ACTION_DOWN:    if (pressImageId != 0)     this.setImgResource(pressImageId);    if (pressTextColorId != 0)     this.setTextColor(pressTextColorId);    break;   //移動   case MotionEvent.ACTION_MOVE:    break;   //抬起   case MotionEvent.ACTION_UP:    if (imageId != 0)     this.setImgResource(imageId);    if (textColorId != 0)     this.setTextColor(textColorId);    break;  }  return super.onTouchEvent(event); } /**  * 設置默認的圖片  *  * @param resourceID 圖片id  */ public void setImgResourceDefault(int resourceID) {  imageId = resourceID;  setImgResource(resourceID); } /**  * 設置按下的圖片  *  * @param resourceID 圖片id  */ public void setImgResourcePress(int resourceID) {  pressImageId = resourceID; } /**  * 設置顯示的圖片  *  * @param resourceID 圖片ID  */ private void setImgResource(int resourceID) {  if (resourceID == 0) {   this.mImageView.setImageResource(0);  } else {   this.mImageView.setImageResource(resourceID);  } } /**  * 設置顯示的文字  *  * @param text  */ public void setText(int text) {  this.mTextView.setText(text); } /**  * 設置字體顏色(默認為黑色)  *  * @param color  */ private void setTextColor(int color) {  if (color == 0) {   this.mTextView.setTextColor(Color.BLACK);  } else {   this.mTextView.setTextColor(getResources().getColor(color));  } } /**  * 設置默認的顏色  *  * @param color 顏色ID  */ public void setTextDefaultColor(int color) {  textColorId = color;  setTextColor(color); } /**  * 設置按下的顏色  *  * @param color 顏色ID  */ public void setTextPressColor(int color) {  pressImageId = color; } /**  * 設置字體大小  *  * @param size  */ public void setTextSize(float size) {  this.mTextView.setTextSize(size); } /**  * 設置文字與上面的距離  * @param top  */ public void setTextPaddingTop(int top) {  if (top != 0)   this.mTextView.setPadding(0, getResources().getDimensionPixelOffset(top), 0, 0); }}

下面是屬性文件

image_text.xml

<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="imageText">  <attr name="image" format="integer" />  <attr name="pressImage" format="integer" />  <attr name="text" format="integer" />  <attr name="textColor" format="integer" />  <attr name="pressTextColor" format="integer" />  <attr name="textTop" format="integer" /> </declare-styleable></resources>

屬性文件存放位置如下圖


文件位置

下面我們來看看具體的調用方法


布局調用

當然我們也可以在Activity中進行再次設置, 例如:


在java中設置

這些都是在自定義View中的set方法...也可以根據具體的業務增刪set方法.

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平陆县| 报价| 保靖县| 台东县| 内乡县| 奈曼旗| 祁连县| 石门县| 宜兰县| 吴川市| 门头沟区| 德保县| 怀来县| 江都市| 美姑县| 桂林市| 射洪县| 光山县| 拉萨市| 克什克腾旗| 湾仔区| 凤翔县| 台湾省| 临漳县| 图木舒克市| 玛曲县| 左权县| 依兰县| 子洲县| 平远县| 皮山县| 昂仁县| 山东省| 临澧县| 泗阳县| 罗山县| 元谋县| 湾仔区| 舞钢市| 巴楚县| 常州市|