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

首頁 > 系統 > Android > 正文

Android TagCloudView云標簽的使用方法

2019-10-22 18:10:21
字體:
來源:轉載
供稿:網友

這兩天做了一個項目,發現標簽不能更改任意一個標簽的字體的顏色,需求如同置前標簽,然后就對tagcloudeview稍做修改做了這么一個demo。不為別的,只為以后自己用的時候方便拷貝。

先看效果圖:

Android,TagCloudView,云標簽

這兩天做了一個項目,需求如同置前標簽,然后就對tagcloudeview稍做修改做了這么一個demo。不為別的,只為以后自己用的時候方便拷貝。

云標簽開源地址

在源碼里面加了兩個方法

/**修改某些位置定點顏色**/  public void setTagsByPosition(HashMap<Integer, Boolean> positions, List<String> tagList){    this.tags = tagList;    this.removeAllViews();    if (tags != null && tags.size() > 0) {      for (int i = 0; i < tags.size(); i++) {        TextView tagView = (TextView) mInflater.inflate(mTagResId, null);        if (mTagResId == DEFAULT_TAG_RESID) {          tagView.setBackgroundResource(mBackground);          tagView.setTextSize(TypedValue.COMPLEX_UNIT_SP, mTagSize);          if (positions.get(i)){            tagView.setTextColor(mSeclectTagColor);          }else{            tagView.setTextColor(mTagColor);          }        }        LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);        tagView.setLayoutParams(layoutParams);        tagView.setText(tags.get(i));        tagView.setTag(TYPE_TEXT_NORMAL);        final int finalI = i;        tagView.setOnClickListener(new OnClickListener() {          @Override          public void onClick(View v) {            if (onTagClickListener != null) {              onTagClickListener.onTagClick(finalI);            }          }        });        addView(tagView);      }    }    postInvalidate();  }  /**最前面的修改顏色**/  public void setTagsByLength(int length,List<String> tagList){    this.tags = tagList;    this.removeAllViews();    if (tags != null && tags.size() > 0) {      for (int i = 0; i < tags.size(); i++) {        TextView tagView = (TextView) mInflater.inflate(mTagResId, null);        if (mTagResId == DEFAULT_TAG_RESID) {          tagView.setBackgroundResource(mBackground);          tagView.setTextSize(TypedValue.COMPLEX_UNIT_SP, mTagSize);          if (i >= length){            tagView.setTextColor(mTagColor);          }else{            tagView.setTextColor(mSeclectTagColor);          }        }        LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);        tagView.setLayoutParams(layoutParams);        tagView.setText(tags.get(i));        tagView.setTag(TYPE_TEXT_NORMAL);        final int finalI = i;        tagView.setOnClickListener(new OnClickListener() {          @Override          public void onClick(View v) {            if (onTagClickListener != null) {              onTagClickListener.onTagClick(finalI);            }          }        });        addView(tagView);      }    }    postInvalidate();  }

一目了然的方法,所以不多做解釋 

另外加了一個選中字體顏色的全局常量,和一個int變量

 private static final int SELCECT_TEXT_COLOR = R.color.yellow_bg;//選中后的標簽顏色  private int mSeclectTagColor;

在styles.xml中給TagCloudView增加了一個選中字體顏色的attr

<attr name="tcvSeclecTextColor" format="reference" />

剩下就是運用的地方

不多說,直接上代碼

 

public class MainActivity extends AppCompatActivity {  private TagCloudView normalTagView;//標準  private TagCloudView selectTagUseView;//置前  private TagCloudView positionsView;//定點  private List<String> AllTagsNormal = new ArrayList<>(0);//整個標簽存放集合  private List<String> AllTagsSelect = new ArrayList<>(0);//整個標簽存放集合  private List<String> selectTags = new ArrayList<>(0);//選中的標簽  private List<String> notSelectTags = new ArrayList<>(0);//未選中的標簽  private List<String> AllTagsPosition = new ArrayList<>(0);//整個標簽存放集合  private HashMap<Integer, Boolean> map = new HashMap<>(0);//記錄選擇的位置  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);    normalTagView = (TagCloudView) findViewById(R.id.normalTag);    selectTagUseView = (TagCloudView) findViewById(R.id.selcetTagUse);    positionsView = (TagCloudView) findViewById(R.id.positionsTag);    setSupportActionBar(toolbar);    for (int i = 0; i < 15; i++) {      AllTagsNormal.add("普通標簽" + i);      AllTagsSelect.add("置前標簽" + i);      AllTagsPosition.add("定點標簽" + i);      map.put(i, false);    }    normalTagView.setOnTagClickListener(new TagCloudView.OnTagClickListener() {      @Override      public void onTagClick(int position) {        Snackbar.make(normalTagView, AllTagsNormal.get(position), Snackbar.LENGTH_LONG)            .setAction("Action", null).show();      }    });    selectTagUseView.setOnTagClickListener(new TagCloudView.OnTagClickListener() {      @Override      public void onTagClick(int position) {        if (selectTags.contains(AllTagsSelect.get(position))) {//如果選中的里面有 就刪掉 扔到未選中的里面去          selectTags.remove(position);          notSelectTags.add(AllTagsSelect.get(position));        } else {          selectTags.add(AllTagsSelect.get(position));//          notSelectTags.remove(position - selectTags.size() + 1);        }        Snackbar.make(selectTagUseView, AllTagsSelect.get(position), Snackbar.LENGTH_LONG)            .setAction("Action", null).show();        AllTagsSelect.clear();//清空,重新裝數據        AllTagsSelect.addAll(selectTags);        AllTagsSelect.addAll(notSelectTags);        bindSelectUseView(selectTags.size());      }    });    positionsView.setOnTagClickListener(new TagCloudView.OnTagClickListener() {      @Override      public void onTagClick(int position) {        bindPositionView(position);        Snackbar.make(positionsView, AllTagsPosition.get(position), Snackbar.LENGTH_LONG)            .setAction("Action", null).show();      }    });    normalTagView.setTags(AllTagsNormal);    int selectLength = 4;    bindSelectUseView(selectLength);    //用一個hashmap存放當前位置是否需要變色    bindPositionView(3);    bindPositionView(6);    bindPositionView(9);  }  /**   * 定點標簽記錄和view變化   **/  private void bindPositionView(int position) {    for (int i = 0; i < AllTagsPosition.size(); i++) {      if (i == position) {        if (map.get(i)) {          map.put(i, false);        } else {          map.put(i, true);        }      } else {        if (map.get(i)) {          map.put(i, true);        } else {          map.put(i, false);        }      }    }    positionsView.setTagsByPosition(map, AllTagsPosition);    for (int i = 0; i < AllTagsPosition.size(); i++) {      if (map.get(i)) {        positionsView.getChildAt(i).setBackgroundResource(R.drawable.edit_style_yellow);      }    }  }  /**   * 選中標簽的運用   **/  private void bindSelectUseView(int selectLength) {    selectTagUseView.setTagsByLength(selectLength, AllTagsSelect);    selectTags.clear();    notSelectTags.clear();    for (int i = 0; i < AllTagsSelect.size(); i++) {      if (i < selectLength) {        selectTags.add(AllTagsSelect.get(i));//選中的存放入集合        selectTagUseView.getChildAt(i).setBackgroundResource(R.drawable.edit_style_yellow);      } else {        notSelectTags.add(AllTagsSelect.get(i));//未選中的存放入集合      }    }  }  @Override  public boolean onCreateOptionsMenu(Menu menu) {    // Inflate the menu; this adds items to the action bar if it is present.    getMenuInflater().inflate(R.menu.menu_main, menu);    return true;  }  @Override  public boolean onOptionsItemSelected(MenuItem item) {    // Handle action bar item clicks here. The action bar will    // automatically handle clicks on the Home/Up button, so long    // as you specify a parent activity in AndroidManifest.xml.    int id = item.getItemId();    //noinspection SimplifiableIfStatement    if (id == R.id.action_settings) {      return true;    }    return super.onOptionsItemSelected(item);  }}

項目下載地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛宁县| 清水河县| 繁峙县| 沁水县| 鹤岗市| 永福县| 五常市| 龙陵县| 黎城县| 乌兰察布市| 晋中市| 泾源县| 江城| 登封市| 工布江达县| 垦利县| 阳西县| 青州市| 泸州市| 遂宁市| 新兴县| 临夏市| 丹巴县| 会宁县| 昌图县| 岑巩县| 广河县| 镶黄旗| 清镇市| 吉木萨尔县| 江永县| 麻江县| 高邑县| 华坪县| 湟中县| 报价| 晴隆县| 洛阳市| 自治县| 广宗县| 南靖县|