java - Android Studio TextViews onClick 都执行相同的操作,我该如何解决?

标签 java android onclick onclicklistener

我有这个函数,它应该创建一个具有唯一 ID 的 TextViews 数组。

每个 TextView 都应该执行一个独特的操作,但是当单击其中任何一个时,它们会执行最后一个 TextView 的功能。

(即,他们中的任何人按照我设置的方式将 9 附加到最后一个 TextView)你知道它为什么这样做吗?我该如何解决它?

如有任何帮助,我们将不胜感激。

//Code:   
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_what_can_imake);

        int textViewCount = 10;

        TextView[] textViewArray = new TextView[textViewCount];
        RelativeLayout myLayout = (RelativeLayout) findViewById(R.id.myLayout);
        for(int i = 0; i < textViewCount; i++) {
            textViewArray[i] = new TextView(this);
            textViewArray[i].setText("Title"+Integer.toString(i));
            textViewArray[i].setPadding(8,8+50*i,8,0);
            textViewArray[i].setId(i);
            LayoutParams myTitleDimensions = new RelativeLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);


            textViewArray[i].setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    int myId = v.getId();
                    ((TextView) v).append(Integer.toString(myId));
                }
            });
            myLayout.addView(textViewArray[i],myTitleDimensions);
        }

    }

最佳答案

您正在使用不同的 paddingTop 来垂直布局您的 TextView:

textViewArray[i].setPadding(8,8+50*i,8,0);

这使得 TextView 在视觉上彼此分离,但实际上它们都是重叠的,第 2 个与第 1 个重叠,第 3 个与第 2 个重叠,等等。最后,第 9 个一个重叠,所以无论你点击哪个文本,你实际上点击了第 9 个。

要解决此问题,您应该更改布局 TextView 的方式。

例如,使用RelativeLayout.addRule(int verb, int anchor):

RelativeLayout.LayoutParams myTitleDimensions = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
if (i > 0) {
    myTitleDimensions.addRule(RelativeLayout.BELOW, i - 1);
}

顺便说一下,0 不是一个有效的 id,所以你的第一个 TextView 仍然会被第二个重叠,只是稍微改变一下生成 id 的方式.

关于java - Android Studio TextViews onClick 都执行相同的操作,我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45363696/

相关文章:

java - 通过 EJB 共享静态单例

android - 不同 Activity 中的 AsyncTask 类?

jquery - 如何使用 JQuery 将点击事件添加到 iframe

java - Java中从字符串中提取子字符串

java - Spring Batch Item Writer Listener 不工作

android - 如何从可绘制文件夹中的图像获取路径并设置为 ImageView 、位图?

安卓:bitmapfactory.decodestream 返回 null

javascript - Null Page_Validators 在触发 asp 按钮 onclick 时导致错误

javascript - 剑道网格 : Column Template Click event throwing Uncaught SyntaxError: missing ) after argument list?

java - 未注解的方法会覆盖使用@NotNull 注解的方法