其實以前沒有寫文章的習(xí)慣,碰到些重要的point或者糾錯之類的都是直接在程序旁邊注釋下來(自我陶醉宽档,以為自己會回過頭來復(fù)習(xí)图谷?),后天時間久了慢慢發(fā)現(xiàn)自己在重復(fù)犯一些錯誤逐哈,這就讓人受不了了芬迄,所以感覺找一個沒有人的小角落把自己認為重要的容易犯的錯誤整理紀錄下來還是有必要的。
為什么不是CSDN昂秃?
簡書的style是真的舒服禀梳。
好了,接下里切入主題肠骆,今天介紹的主要是一個動態(tài)生成算途、刪除button的小DEMO,并且結(jié)合ScrollView保證在button的數(shù)目過多導(dǎo)致超出屏幕的時候能夠上下拉瀏覽下面的button蚀腿。
這里是個初始化界面嘴瓤,放置了三個功能鍵,分別是“增加按鈕”莉钙、“減少按鈕”廓脆、“重命名”,點擊重命名按鈕會直接跳轉(zhuǎn)到命名界面磁玉。
界面里就簡單地放了一個EditText和SubmitButton狞贱,另外這里的EditText簡單地調(diào)用了PowerfulEditText這個開源庫,實現(xiàn)整體刪除蜀涨,具體使用方法這里就不作過多介紹瞎嬉。在點擊了Submit之后會跳轉(zhuǎn)回初始化界面,并通過Intent將輸入的內(nèi)容傳回厚柳。
命名界面代碼片段
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("輸入新的名稱");
setContentView(R.layout.name_edit);
submit=(Button) findViewById(R.id.submit);
okc=(EditText) findViewById(R.id.name);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1=new Intent();
String name=okc.getText().toString();
intent1.putExtra("okc",name);
setResult(RESULT_OK,intent1);
finish();
}
});
}
添加按鍵點擊事件
addB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
layout.addView(createButton());
}
});
這里的createButton()的返回值直接是一個動態(tài)創(chuàng)建好的Button氧枣,在點擊添加按鈕之后通過addView()函數(shù)動態(tài)添加到界面中。
對了别垮,這里的okc是全局變量便监,由submit傳遞過來。
protected View createButton(){
final Button btn=new Button(this);
btn.setId(index++);
Log.d("da","id is" + btn.getId());
btn.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
btn.setText(okc);
return btn;
}
移除按鍵點擊事件
整個Layout布局中,“ADD BUTTON”是第0位烧董,所以在remove的時候毁靶,只能移除3<location<count-1這個范圍的Button。 if (count-3>0)用來判斷是否添加的按鈕逊移。
removeB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int count=layout.getChildCount();
if (count-3>0) {
layout.removeViewAt(count-1);
}
}
});
最后附上運行效果圖
Github
Github項目里的UI已經(jīng)進行了優(yōu)化预吆,并且加了些新功能。