Android TextView: снять текст, который был ранее написан
Я искал в Интернете, и я обнаружил, что для снятия удара текста, который был зачеркнут, мне нужно использовать следующий код:
tv.setPaintFlags (tv.getPaintFlags () & (~ Paint.STRIKE_THRU_TEXT_FLAG));
где тв обозначает некоторую переменную TextView. Это просто не работает для меня. Что мне не хватает?
Я был бы очень признателен за вашу помощь.
Вот определение одного из виджетов TextView из файла макета:
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="65dp"
android:background="@drawable/roundedyellowbtn1"
android:text="@string/choice1"
android:textSize="35sp"
android:onClick="onClick"
android:clickable="true"
android:layout_margin="5dp" />
Вы видите что-то не так?
Вот весь код:
public class MyClass extends Activity {
TextView tv1;
TextView tv2;
TextView tv3;
TextView tv4;
TextView tv5;
TextView tv6;
TextView tv7;
TextView tv8;
TextView tv9;
TextView tv10;
TextView tv11;
TextView tv12;
TextView tv13;
TextView tv14;
TextView tv15;
TextView tv16;
TextView tv17;
TextView tv18;
TextView tv19;
TextView tv20;
TextView tv21;
TextView tv22;
TextView tv23;
TextView tv24;
TextView tv25;
TextView tv26;
TextView tv27;
TextView tv28;
TextView tv29;
TextView tv30;
TextView tv31;
TextView tv32;
TextView tv33;
TextView tv34;
TextView tv35;
TextView tv36;
TextView tv37;
TextView tv38;
TextView tv39;
TextView tv40;
TextView tv41;
TextView tv42;
TextView tv43;
TextView tv44;
TextView tv45;
TextView tv46;
TextView tv47;
TextView tv48;
TextView tv49;
TextView tv50;
TextView tv51;
TextView tv52;
TextView tv53;
TextView tv54;
TextView tv55;
TextView txtView_A;
TextView txtView_B;
TextView txtView_C;
TextView txtView_D;
TextView txtView_E;
TextView txtView_F;
TextView txtView_A_v;
TextView txtView_B_v;
TextView txtView_C_v;
TextView txtView_D_v;
TextView txtView_E_v;
TextView txtView_F_v;
String number; //the lotto number
int nrOfStrikes = 0; //6 for each panel
int totalNrOfStrikes = 0; // 36 in all
String panelContents = "";
int tviewId = 0;
TextView tview;
TextView[] chosen = new TextView[6]; // to remember the 6 choices so that they are
// "unstrike" and can be chosen again
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grandlotto_655);
tv1 = (TextView) findViewById(R.id.tv1);
tv2 = (TextView) findViewById(R.id.tv2);
tv3 = (TextView) findViewById(R.id.tv3);
tv4 = (TextView) findViewById(R.id.tv4);
tv5 = (TextView) findViewById(R.id.tv5);
tv6 = (TextView) findViewById(R.id.tv6);
tv7 = (TextView) findViewById(R.id.tv7);
tv8 = (TextView) findViewById(R.id.tv8);
tv9 = (TextView) findViewById(R.id.tv9);
tv10 = (TextView) findViewById(R.id.tv10);
tv11 = (TextView) findViewById(R.id.tv11);
tv12 = (TextView) findViewById(R.id.tv12);
tv13 = (TextView) findViewById(R.id.tv13);
tv14 = (TextView) findViewById(R.id.tv14);
tv15 = (TextView) findViewById(R.id.tv15);
tv16 = (TextView) findViewById(R.id.tv16);
tv17 = (TextView) findViewById(R.id.tv17);
tv18 = (TextView) findViewById(R.id.tv18);
tv19 = (TextView) findViewById(R.id.tv19);
tv20 = (TextView) findViewById(R.id.tv20);
tv21 = (TextView) findViewById(R.id.tv21);
tv22 = (TextView) findViewById(R.id.tv22);
tv23 = (TextView) findViewById(R.id.tv23);
tv24 = (TextView) findViewById(R.id.tv24);
tv25 = (TextView) findViewById(R.id.tv25);
tv26 = (TextView) findViewById(R.id.tv26);
tv27 = (TextView) findViewById(R.id.tv27);
tv28 = (TextView) findViewById(R.id.tv28);
tv29 = (TextView) findViewById(R.id.tv29);
tv30 = (TextView) findViewById(R.id.tv30);
tv31 = (TextView) findViewById(R.id.tv31);
tv32 = (TextView) findViewById(R.id.tv32);
tv33 = (TextView) findViewById(R.id.tv33);
tv34 = (TextView) findViewById(R.id.tv34);
tv35 = (TextView) findViewById(R.id.tv35);
tv36 = (TextView) findViewById(R.id.tv36);
tv37 = (TextView) findViewById(R.id.tv37);
tv38 = (TextView) findViewById(R.id.tv38);
tv39 = (TextView) findViewById(R.id.tv39);
tv40 = (TextView) findViewById(R.id.tv40);
tv41 = (TextView) findViewById(R.id.tv41);
tv42 = (TextView) findViewById(R.id.tv42);
tv43 = (TextView) findViewById(R.id.tv43);
tv44 = (TextView) findViewById(R.id.tv44);
tv45 = (TextView) findViewById(R.id.tv45);
tv46 = (TextView) findViewById(R.id.tv46);
tv47 = (TextView) findViewById(R.id.tv47);
tv48 = (TextView) findViewById(R.id.tv48);
tv49 = (TextView) findViewById(R.id.tv49);
tv50 = (TextView) findViewById(R.id.tv50);
tv51 = (TextView) findViewById(R.id.tv51);
tv52 = (TextView) findViewById(R.id.tv52);
tv53 = (TextView) findViewById(R.id.tv53);
tv54 = (TextView) findViewById(R.id.tv54);
tv55 = (TextView) findViewById(R.id.tv55);
txtView_A_v = (TextView) findViewById(R.id.TextView_A_value);
txtView_B_v = (TextView) findViewById(R.id.TextView_B_value);
txtView_C_v = (TextView) findViewById(R.id.TextView_C_value);
txtView_D_v = (TextView) findViewById(R.id.TextView_D_value);
txtView_E_v = (TextView) findViewById(R.id.TextView_E_value);
txtView_F_v = (TextView) findViewById(R.id.TextView_F_value);
txtView_A = (TextView) findViewById(R.id.TextView_A);
txtView_B = (TextView) findViewById(R.id.TextView_B);
txtView_C = (TextView) findViewById(R.id.TextView_C);
txtView_D = (TextView) findViewById(R.id.TextView_D);
txtView_E = (TextView) findViewById(R.id.TextView_E);
txtView_F = (TextView) findViewById(R.id.TextView_F);
tv1.setOnClickListener(myHandler);
tv2.setOnClickListener(myHandler);
tv3.setOnClickListener(myHandler);
tv4.setOnClickListener(myHandler);
tv5.setOnClickListener(myHandler);
tv6.setOnClickListener(myHandler);
tv7.setOnClickListener(myHandler);
tv8.setOnClickListener(myHandler);
tv9.setOnClickListener(myHandler);
tv10.setOnClickListener(myHandler);
tv11.setOnClickListener(myHandler);
tv12.setOnClickListener(myHandler);
tv13.setOnClickListener(myHandler);
tv14.setOnClickListener(myHandler);
tv15.setOnClickListener(myHandler);
tv16.setOnClickListener(myHandler);
tv17.setOnClickListener(myHandler);
tv18.setOnClickListener(myHandler);
tv19.setOnClickListener(myHandler);
tv20.setOnClickListener(myHandler);
tv21.setOnClickListener(myHandler);
tv22.setOnClickListener(myHandler);
tv23.setOnClickListener(myHandler);
tv24.setOnClickListener(myHandler);
tv25.setOnClickListener(myHandler);
tv26.setOnClickListener(myHandler);
tv27.setOnClickListener(myHandler);
tv28.setOnClickListener(myHandler);
tv29.setOnClickListener(myHandler);
tv30.setOnClickListener(myHandler);
tv31.setOnClickListener(myHandler);
tv32.setOnClickListener(myHandler);
tv33.setOnClickListener(myHandler);
tv34.setOnClickListener(myHandler);
tv35.setOnClickListener(myHandler);
tv36.setOnClickListener(myHandler);
tv37.setOnClickListener(myHandler);
tv38.setOnClickListener(myHandler);
tv39.setOnClickListener(myHandler);
tv40.setOnClickListener(myHandler);
tv41.setOnClickListener(myHandler);
tv42.setOnClickListener(myHandler);
tv43.setOnClickListener(myHandler);
tv44.setOnClickListener(myHandler);
tv45.setOnClickListener(myHandler);
tv46.setOnClickListener(myHandler);
tv47.setOnClickListener(myHandler);
tv48.setOnClickListener(myHandler);
tv49.setOnClickListener(myHandler);
tv50.setOnClickListener(myHandler);
tv51.setOnClickListener(myHandler);
tv52.setOnClickListener(myHandler);
tv53.setOnClickListener(myHandler);
tv54.setOnClickListener(myHandler);
tv55.setOnClickListener(myHandler);
}
View.OnClickListener myHandler = new View.OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv1:
strike(tv1);
break;
case R.id.tv2:
strike(tv2);
break;
case R.id.tv3:
strike(tv3);
break;
case R.id.tv4:
strike(tv4);
break;
case R.id.tv5:
strike(tv5);
break;
case R.id.tv6:
strike(tv6);
break;
case R.id.tv7:
strike(tv7);
break;
case R.id.tv8:
strike(tv8);
break;
case R.id.tv9:
strike(tv9);
break;
case R.id.tv10:
strike(tv10);
break;
case R.id.tv11:
strike(tv11);
break;
case R.id.tv12:
strike(tv12);
break;
case R.id.tv13:
strike(tv13);
break;
case R.id.tv14:
strike(tv14);
break;
case R.id.tv15:
strike(tv15);
break;
case R.id.tv16:
strike(tv16);
break;
case R.id.tv17:
strike(tv17);
break;
case R.id.tv18:
strike(tv18);
break;
case R.id.tv19:
strike(tv19);
break;
case R.id.tv20:
strike(tv20);
break;
case R.id.tv21:
strike(tv21);
break;
case R.id.tv22:
strike(tv22);
break;
case R.id.tv23:
strike(tv23);
break;
case R.id.tv24:
strike(tv24);
break;
case R.id.tv25:
strike(tv25);
break;
case R.id.tv26:
strike(tv26);
break;
case R.id.tv27:
strike(tv27);
break;
case R.id.tv28:
strike(tv28);
break;
case R.id.tv29:
strike(tv29);
break;
case R.id.tv30:
strike(tv30);
break;
case R.id.tv31:
strike(tv31);
break;
case R.id.tv32:
strike(tv32);
break;
case R.id.tv33:
strike(tv33);
break;
case R.id.tv34:
strike(tv34);
break;
case R.id.tv35:
strike(tv35);
break;
case R.id.tv36:
strike(tv36);
break;
case R.id.tv37:
strike(tv37);
break;
case R.id.tv38:
strike(tv38);
break;
case R.id.tv39:
strike(tv39);
break;
case R.id.tv40:
strike(tv40);
break;
case R.id.tv41:
strike(tv41);
break;
case R.id.tv42:
strike(tv42);
break;
case R.id.tv43:
strike(tv43);
break;
case R.id.tv44:
strike(tv44);
break;
case R.id.tv45:
strike(tv45);
break;
case R.id.tv46:
strike(tv46);
break;
case R.id.tv47:
strike(tv47);
break;
case R.id.tv48:
strike(tv48);
break;
case R.id.tv49:
strike(tv49);
break;
case R.id.tv50:
strike(tv50);
break;
case R.id.tv51:
strike(tv51);
break;
case R.id.tv52:
strike(tv52);
break;
case R.id.tv53:
strike(tv53);
break;
case R.id.tv54:
strike(tv54);
break;
case R.id.tv55:
strike(tv55);
break;
default:
break;
}
}
};
public String getPanelContents(int n) {
String pContent = panelContents;
for (int i = 0; i < (6 - n); ++i) {
pContent = pContent + " --";
}
return pContent;
}
public void strike(TextView tv) {
//Log.i("HEREHERE","" + (tv.getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG));
//Log.i("tv.getPaintFlags() = ", "" + tv.getPaintFlags());
//Log.i("Paint.STRIKE_THRU_TEXT_FLAG=", "" + Paint.STRIKE_THRU_TEXT_FLAG);
//////////////if (tv.getText() instanceof SpannedString) {
if ((tv.getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) > 0) {
Log.i("INSIDE IF","HERE");
//tv.setPaintFlags(0);
Log.i("NUMBER = ", "" + tv.getText());
//tv.setPaintFlags( tv.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
tv.getPaint().setStrikeThruText(false);
//tv.setText("[" + tv.getText().charAt(1) + tv.getText().charAt(2) + "]");
}
if ((!((tv.getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) > 0)) && totalNrOfStrikes < 36) {
if (tviewId == 0) {
tviewId = R.id.TextView_A;
txtView_A.setTextColor(Color.RED);
}
else if (txtView_A.getCurrentTextColor() == Color.RED &&
txtView_B.getCurrentTextColor() == Color.BLACK && nrOfStrikes == 6) {
nrOfStrikes = 0;
panelContents = "";
tviewId = R.id.TextView_B;
txtView_A.setTextColor(Color.BLACK);
txtView_B.setTextColor(Color.RED);
}
else if (txtView_A.getCurrentTextColor() == Color.BLACK &&
txtView_B.getCurrentTextColor() == Color.RED &&
txtView_C.getCurrentTextColor() == Color.BLACK && nrOfStrikes == 6) {
nrOfStrikes = 0;
panelContents = "";
tviewId = R.id.TextView_C;
txtView_B.setTextColor(Color.BLACK);
txtView_C.setTextColor(Color.RED);
}
else if (txtView_A.getCurrentTextColor() == Color.BLACK &&
txtView_B.getCurrentTextColor() == Color.BLACK &&
txtView_C.getCurrentTextColor() == Color.RED &&
txtView_D.getCurrentTextColor() == Color.BLACK && nrOfStrikes == 6) {
nrOfStrikes = 0;
panelContents = "";
tviewId = R.id.TextView_D;
txtView_C.setTextColor(Color.BLACK);
txtView_D.setTextColor(Color.RED);
}
else if (txtView_A.getCurrentTextColor() == Color.BLACK &&
txtView_B.getCurrentTextColor() == Color.BLACK &&
txtView_C.getCurrentTextColor() == Color.BLACK &&
txtView_D.getCurrentTextColor() == Color.RED &&
txtView_E.getCurrentTextColor() == Color.BLACK && nrOfStrikes == 6) {
nrOfStrikes = 0;
panelContents = "";
tviewId = R.id.TextView_E;
txtView_D.setTextColor(Color.BLACK);
txtView_E.setTextColor(Color.RED);
}
else if (txtView_A.getCurrentTextColor() == Color.BLACK &&
txtView_B.getCurrentTextColor() == Color.BLACK &&
txtView_C.getCurrentTextColor() == Color.BLACK &&
txtView_D.getCurrentTextColor() == Color.BLACK &&
txtView_E.getCurrentTextColor() == Color.RED &&
txtView_F.getCurrentTextColor() == Color.BLACK && nrOfStrikes == 6) {
nrOfStrikes = 0;
panelContents = "";
tviewId = R.id.TextView_F;
txtView_E.setTextColor(Color.BLACK);
txtView_F.setTextColor(Color.RED);
}
else if (nrOfStrikes == 5){
txtView_F.setTextColor(Color.BLACK);
}
switch (tviewId) {
case R.id.TextView_A:
tview = txtView_A_v;
break;
case R.id.TextView_B:
tview = txtView_B_v;
break;
case R.id.TextView_C:
tview = txtView_C_v;
break;
case R.id.TextView_D:
tview = txtView_D_v;
break;
case R.id.TextView_E:
tview = txtView_E_v;
break;
case R.id.TextView_F:
tview = txtView_F_v;
break;
default:
break;
}
number = (String) tv.getText();
number = number.substring(1,3);
//Log.i("Length of number=",""+number.length());
nrOfStrikes++;
totalNrOfStrikes++;
panelContents = panelContents + " " + number;
tview.setText(getPanelContents(nrOfStrikes));
////SpannableString content = new SpannableString(tv.getText());
////content.setSpan(new StrikethroughSpan(), 1, 1, 0);
////tv.setText(content);
tv.setPaintFlags( tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
}
}
2 ответа
Один из способов сделать это - удалить текстовое представление, а затем воссоздать текстовое представление с тем же текстом, но, я полагаю, без зачеркивания.
Спасибо всем за попытку помочь. Проблема заключалась в том, что у меня было два последовательных простых оператора if, но вместо этого они должны были быть if .... else if.... else...
Это было действительно забавно, но теперь это работает!