Android 中的删除线文本
在本文中,我们将使用此方法在 TextView 上实现删除线功能。当我们想要编辑我们的内容但又希望用户看到以前的内容时,这会很有用。就像在亚马逊应用程序上一样,我们都看到当商品有折扣时,价格会以删除线显示,并且当前价格并排显示。下面给出了一个示例 GIF,以了解我们将在本文中做什么。请注意,我们将使用Java语言来实现这个项目。
方法一
创建一个名为删除线的可绘制文件,并将此可绘制文件添加到文本文件中
-
方法二
创建这样一个字符串,将增加该字符串作为TextView的文本
Geeks For Geeks
方法三
在MainActivity 中输入以下行。 Java文件。
strike.setPaintFlags(strike.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
三种方法的实现
第 1 步:创建一个新项目
要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Java作为编程语言。
步骤 2:使用 activity_main.xml 文件
导航到app > res > layout > activity_main.xml并将以下代码添加到该文件中。下面是activity_main.xml文件的代码。
XML
Java
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
TextView strike;
Button change;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initialise the layout
strike = findViewById(R.id.striketext);
change = findViewById(R.id.change);
// click on the button
change.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// if the text is not having strike then set strike else vice versa
if (!strike.getPaint().isStrikeThruText()) {
strike.setPaintFlags(strike.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
strike.setPaintFlags(strike.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
}
}
});
}
}
第 3 步:使用MainActivity。 Java文件
转到主活动。 Java文件,参考如下代码。下面是MainActivity的代码。 Java文件。代码中添加了注释以更详细地理解代码。
Java
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
TextView strike;
Button change;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initialise the layout
strike = findViewById(R.id.striketext);
change = findViewById(R.id.change);
// click on the button
change.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// if the text is not having strike then set strike else vice versa
if (!strike.getPaint().isStrikeThruText()) {
strike.setPaintFlags(strike.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
strike.setPaintFlags(strike.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
}
}
});
}
}
输出: