如何使对话框中的整个视图可点击?

时间:2013-03-05 12:39:26

标签: java android view dialog onclicklistener

我在eache视图中有对话和文字,我可以点击。 我希望所有的视图都是可点击的,只有文字。

代码:

        final Dialog dialog = new Dialog(List_Lists.this);
        dialog.setContentView(R.layout.dialog_edit_tables);
        dialog.setTitle("Action for " + table);


        TextView delete = (TextView) dialog
                .findViewById(R.id.tvDeleteTable);
        TextView cancel = (TextView) dialog.findViewById(R.id.tvCancel);

        OnClickListener l = new OnClickListener() {

            @Override
            public void onClick(View v) {

                dbAdapter = new DBmethods(getApplicationContext());
                switch (v.getId()) {


                case R.id.tvDeleteTable:
                    viewListsAdapter.listsV.remove(pos);
                    dbAdapter.deleteTable(table);
                    break;
                case R.id.tvCancel:
                    dialog.dismiss();
                    break;
                case R.id.bTableRenameName:

                    if(dbAdapter.checkTableNameOK(List_Lists.this  ,newName.getText().toString())){

                        viewListsAdapter.listsV.remove(pos);
                        viewListsAdapter.listsV.add(pos, newName.getText().toString().trim());
                        dbAdapter.renameTable(table , newName.getText().toString().trim());
                        renamedialog.dismiss();
                    };

                    break;

                default:
                    break;
                }
                // if button is clicked, close the custom dialog
                dialog.dismiss();
                lv.invalidateViews();
            }
        };

        delete.setOnClickListener(l);
        cancel.setOnClickListener(l);

        dialog.show();
    }
});

}

正如我所说,如果用户按下视图内的文本,此代码工作正常,但空视图显然不会响应。谢谢!

if user press on red spot it activate the enter , if green than duplicate and so on

如果用户按下红点就会激活输入,如果是绿色而不是重复等等...当前状态是你必须按下该字,如果你按下彩色斑点它将什么都不做

4 个答案:

答案 0 :(得分:1)

如果我没有错,你需要这个才能使布局可点击

尝试这样的事情 您可以在其上添加OnClickListener:

//onCreate
LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout01);
layout.setOnClickListener(yourOnClickListener);

应该有效;)

答案 1 :(得分:0)

创建dialog_edit_tables

的ID

在xml中说android:id=@+id\testing

现在写这个

LinearLayout yourlayout = (LinearLayout) findViewById(R.id.testing);
yourlayout.setOnClickListener(l);
希望这会有所帮助。

答案 2 :(得分:0)

您尚未显示XML布局,但将可点击文本视图的宽度设置为fill_parent应该有效,同时确保您的父布局也将宽度设置为fill_parent。

onClickListener不基于它基于实际组件的文本,因此看起来好像layout_width属性设置为wrap_content,因此组件只是文本的长度,因此只有文本的位置,是可点击的。希望这是有道理的。

答案 3 :(得分:0)

如果我没有错,请使用listviewtableview来显示文字。
你可以做一件事。
将textview layout_width设为fill_parent
这样你就可以触及你标记的地方了。
希望这会有所帮助。