android 在纹理视图上应用/移除部分遮罩

rt4zxlrg  于 2023-05-12  发布在  Android
关注(0)|答案(1)|浏览(183)

我试图部分隐藏一个数字在textview和录音时,一个图标,它应该显示完整的数字。我收到一个特定长度的字符串,只需要显示最后4位数字。
因此,默认情况下,如果我收到123456789abc->,我应该显示*******89abc,当在图标上录音时,它显示123456789abc
我用了一个2 textview来做,其中包含了全文,即. 123456789abc和另一个带有*******89abc的textview
然后我使用下面的代码:

_binding?.viewIcon?.setOnClickListener {
            if(strHidden) {
                _binding?.viewIcon?.setImageDrawable(AppCompatResources.getDrawable(requireContext(), R.drawable.ic_hide))
                _binding?.strPartial?.visibility = View.INVISIBLE
                _binding?.strNumber?.visibility = View.VISIBLE
                strHidden = false
            } else {
                _binding?.viewIcon?.setImageDrawable(AppCompatResources.getDrawable(requireContext(), R.drawable.ic_view))
                _binding?.strPartial?.visibility = View.VISIBLE
                _binding?.strNumber?.visibility = View.INVISIBLE
                strHidden = true
            }
        }

我使用下面的函数来创建带有隐藏字符的字符串。

private fun createHiddenStr(value: String) =
        "*".repeat(value.length-4) + value.takeLast(4)

我想知道是否有一种方法可以只使用一个视图,而不是使用一个遮罩,这将是更好的使用2 textview
你知道吗?

shyt4zoc

shyt4zoc1#

我还没有使用Kotlin的经验。在Java中,这就是我要做的。我会使用一个布尔值来检查点击文本的状态。
boolean clickedText = false,因为在开始时文本没有被点击。
String originalText;定义为全局变量。

`TextView textView = findViewById(R.id.textView);

我在textView上使用了一个点击监听器,但是你也可以在你的图标上使用它

`textView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(!clickedText){
                    originalText = textView.getText().toString();
    
                    int hideLength = originalText.length() - 4; // hide all but last 4 characters
                    String hiddenText = new String(new char[hideLength]).replace("\0", "*"); // create a string of asterisks of the same length as the text to hide
                    String displayedText = hiddenText + originalText.substring(hideLength); // concatenate the asterisks and the visible text
                    textView.setText(displayedText);
                        clickedText = true;}
                    else{
                        textView.setText(originalText);
                        clickedText=false;
                    }
                }
            });`

相关问题