1)我在垂直线性布局中编码了6个水平线性布局。
2)在每个水平线性布局中,有6个文本视图。以编程方式创建,没有xml静态引用。
3)因此,textview采用6乘6矩阵的形状。
4)在每个textView上调用setOnTouchListener。
5)每个textview都有由tv.setID();
指定的唯一ID6)每个textView包含由tv.setTag();
指定的整数值这是我的代码:
lilayParent=(LinearLayout)findViewById(R.id.lilayParent);
lilayParent.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
lilayParent.setOrientation(LinearLayout.VERTICAL);
lilayParent.setOnTouchListener(this);
LinearLayout lilayChild1=new LinearLayout(this);
lilayChild1.setOrientation(LinearLayout.HORIZONTAL);
lilayChild1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
lilayChild1.setGravity(Gravity.CENTER);
LinearLayout lilayChild2=new LinearLayout(this);
lilayChild2.setOrientation(LinearLayout.HORIZONTAL);
lilayChild2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
lilayChild2.setGravity(Gravity.CENTER);
LinearLayout lilayChild3=new LinearLayout(this);
lilayChild3.setOrientation(LinearLayout.HORIZONTAL);
lilayChild3.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
lilayChild3.setGravity(Gravity.CENTER);
LinearLayout lilayChild4=new LinearLayout(this);
lilayChild4.setOrientation(LinearLayout.HORIZONTAL);
lilayChild4.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
lilayChild4.setGravity(Gravity.CENTER);
LinearLayout lilayChild5=new LinearLayout(this);
lilayChild5.setOrientation(LinearLayout.HORIZONTAL);
lilayChild5.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
lilayChild5.setGravity(Gravity.CENTER);
LinearLayout lilayChild6=new LinearLayout(this);
lilayChild6.setOrientation(LinearLayout.HORIZONTAL);
lilayChild6.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
lilayChild6.setGravity(Gravity.CENTER);
for (int r=0; r<ROW_SIZE; r++)
{
for (int c=0; c<COL_SIZE; c++)
{
cell[r][c] = CellCollection.getCell(r,c);
TextView tv=new TextView(this);
// tv.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setLayoutParams(new LayoutParams(40,40));
String id=String.valueOf(r)+String.valueOf(c);
tv.setId(Integer.parseInt(id));
Log.i("ID is",id);
tv.setText(String.valueOf(cell[r][c].getValue()));
tv.setTag(String.valueOf(cell[r][c].getValue()));
int color=cell[r][c].getColor();
if(color==0) color=R.drawable.btn_grey;
if(color==1) color=R.drawable.btn1;
if(color==2) color=R.drawable.btn2;
if(color==3) color=R.drawable.btn3;
if(color==4) color=R.drawable.btn4;
if(color==5) color=R.drawable.btn5;
if(color==6) color=R.drawable.btn6;
if(color==7) color=R.drawable.btn7;
if(color==8) color=R.drawable.btn8;
tv.setGravity(Gravity.CENTER);
tv.setBackgroundResource(color);
if(r==0)lilayChild1.addView(tv);
if(r==1)lilayChild2.addView(tv);
if(r==2)lilayChild3.addView(tv);
if(r==3)lilayChild4.addView(tv);
if(r==4)lilayChild5.addView(tv);
if(r==5)lilayChild6.addView(tv);
tv.setOnTouchListener(this);
}
if(r==0)lilayParent.addView(lilayChild1);
if(r==1)lilayParent.addView(lilayChild2);
if(r==2)lilayParent.addView(lilayChild3);
if(r==3)lilayParent.addView(lilayChild4);
if(r==4)lilayParent.addView(lilayChild5);
if(r==5)lilayParent.addView(lilayChild6);
}
现在我被卡住的部分属于ONTOUCHLISTENER()
// inside MOTIONEVENT.ACTION_DOWN:
case MotionEvent.ACTION_DOWN:
int valueis=v.getId();
if(v.getId()>=0&&v.getId()<=55)
{
tag=Integer.parseInt((String) v.getTag()) ;
// int tag=Integer.parseInt((String) v.getTag()) ;
Log.i("value and tag is",String.valueOf(valueis)+String.valueOf(tag));
//alFiftyFive is an ArrayList<Integer>
alFiftyFive.add(tag);
sumTotal=tag;
Toast.makeText(getApplicationContext(), String.valueOf(tag), 100).show();
tvSum.setText(String.valueOf(tag));
return true;
}
case MotionEvent.ACTION_MOVE:
Log.d("MOVE","MOVE");
if(v.getId()>=00&&v.getId()<=55)
{
tag=Integer.parseInt((String) v.getTag()) ;
Toast.makeText(getApplicationContext(), String.valueOf(tag), 100).show();
alFiftyFive.add(tag);
Log.i("value and tag is",String.valueOf(valueis)+String.valueOf(tag));
Log.i("alFiftyFive",alFiftyFive.toString());
return true;
}
case MotionEvent.ACTION_UP:
Log.d("UP","UP");
for(int i=1;i<alFiftyFive.size();i++)
{
sumTotal= sumTotal +alFiftyFive.get(i);
}
tvSum.setText(String.valueOf(sumTotal));
}
Expecetd行为:我想在触发ontouch移动事件时触发各种连续文本视图,并通过getTag跟踪它们的值,并将其添加到ArrayList中,这是目前没有发生的。