Android开发教程根据外框颜色决定文字颜色以及选中颜色
往往一些个性标签的选择,文字颜色和外框颜色要统一,还有选中颜色
一、思路:
自定义TextView
二、效果图:
三、关键代码:
public class MainActivity extends AppCompatActivity {
private LinearLayout mGroup;
private LinkedList<Integer> mLinkedList;
private View.OnClickListener mOnClickListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 保存选中的id集合
mLinkedList = new LinkedList<>();
mOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
MyTextView mtv = (MyTextView) v;
if (!mtv.isChecked()) {
if (mLinkedList.size() < 3) {
mtv.setChecked(true);
addId(mtv.getBean().getId());
} else {
Toast.makeText(MainActivity.this,"最多添加3个",Toast.LENGTH_SHORT).show();
}
} else {
removeId(mtv.getBean().getId());
mtv.setChecked(false);
}
}
};
mGroup = findViewById(R.id.group);
String jsonInfo = "[{\"colour\":\"#141313\",\"colour2\":\"#873d3d\",\"id\":\"15\",\"ifcheck\":\"0\",\"name\":\"小哥哥\",\"orderno\":\"0\"}, {\"colour\":\"#4edc90\",\"colour2\":\"#22804e\",\"id\":\"1\",\"ifcheck\":\"0\",\"name\":\"小清新\",\"orderno\":\"1\"}, {\"colour\":\"#2595b8\",\"colour2\":\"#33caf9\",\"id\":\"2\",\"ifcheck\":\"0\",\"name\":\"阳光女神\",\"orderno\":\"2\"}, {\"colour\":\"#e5007f\",\"colour2\":\"#f05bad\",\"id\":\"3\",\"ifcheck\":\"0\",\"name\":\"性感\",\"orderno\":\"3\"}, {\"colour\":\"#d48d24\",\"colour2\":\"#f9b552\",\"id\":\"4\",\"ifcheck\":\"0\",\"name\":\"二次元\",\"orderno\":\"4\"}, {\"colour\":\"#b3aa04\",\"colour2\":\"#fff649\",\"id\":\"5\",\"ifcheck\":\"0\",\"name\":\"好声音\",\"orderno\":\"5\"}, {\"colour\":\"#0a8c88\",\"colour2\":\"#06d9d1\",\"id\":\"6\",\"ifcheck\":\"0\",\"name\":\"喊麦达人\",\"orderno\":\"6\"}, {\"colour\":\"#648717\",\"colour2\":\"#8fc41e\",\"id\":\"7\",\"ifcheck\":\"0\",\"name\":\"才艺\",\"orderno\":\"7\"}, {\"colour\":\"#990e5a\",\"colour2\":\"#ea2893\",\"id\":\"8\",\"ifcheck\":\"0\",\"name\":\"潮范儿\",\"orderno\":\"8\"}, {\"colour\":\"#2f9aba\",\"colour2\":\"#4cd1f8\",\"id\":\"9\",\"ifcheck\":\"0\",\"name\":\"舞蹈达人\",\"orderno\":\"9\"}, {\"colour\":\"#53730f\",\"colour2\":\"#8fc41e\",\"id\":\"10\",\"ifcheck\":\"0\",\"name\":\"学生\",\"orderno\":\"10\"}, {\"colour\":\"#1a9995\",\"colour2\":\"#01d8d0\",\"id\":\"11\",\"ifcheck\":\"0\",\"name\":\"高颜值\",\"orderno\":\"11\"}, {\"colour\":\"#ed6942\",\"colour2\":\"#e69881\",\"id\":\"12\",\"ifcheck\":\"0\",\"name\":\"游戏大神\",\"orderno\":\"12\"}, {\"colour\":\"#01d9ce\",\"colour2\":\"#6be3dd\",\"id\":\"13\",\"ifcheck\":\"0\",\"name\":\"帅气男神\",\"orderno\":\"13\"}, {\"colour\":\"#918b13\",\"colour2\":\"#fff100\",\"id\":\"14\",\"ifcheck\":\"0\",\"name\":\"搞笑\",\"orderno\":\"14\"}]";
List<ImpressBean> list = JSON.parseArray(jsonInfo, ImpressBean.class);
int line = 0;
int fromIndex = 0;
boolean hasNext = true;
while (hasNext) {
LinearLayout linearLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.view_impress_line, mGroup, false);
int endIndex = line % 2 == 0 ? fromIndex + 4 : fromIndex + 3;
if (endIndex >= list.size()) {
endIndex = list.size();
hasNext = false;
}
for (int i = fromIndex; i < endIndex; i++) {
MyTextView item = (MyTextView) getLayoutInflater().inflate(R.layout.view_impress_item, linearLayout, false);
ImpressBean impressBean = list.get(i);
if (impressBean.isChecked()) {
addId(impressBean.getId());
}
item.setBean(impressBean);
linearLayout.addView(item);
item.setOnClickListener(mOnClickListener);
}
fromIndex = endIndex;
line++;
mGroup.addView(linearLayout);
}
}
private void addId(int impressId) {
mLinkedList.add(impressId);
}
private void removeId(int impressId) {
int index = -1;
for (int i = 0, size = mLinkedList.size(); i < size; i++) {
if (impressId == mLinkedList.get(i)) {
index = i;
break;
}
}
if (index != -1) {
mLinkedList.remove(index);
}
}
}
四、项目demo源码结构图:
有问题或者需要完整源码看简介联系我,或者私信我