我有一个包含在LinearLayout中的EditText。对于我的项目,我在LinearLayout上设置了一个OnclickListener。当我启动应用程序时,点击布局没有任何反应。也许它归功于EditText,但需要OnCliclistener才能在LenearLayout上运行。
mycode的:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/lnlabelnameuniteholder"
android:id="@+id/choix_decategorie"
android:layout_marginTop="10dp" >
<EditText
android:text="@string/choix_de_categorie"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="italic"
android:textSize="18sp"
android:textColor="#000" />
</LinearLayout>
maCategorie = (LinearLayout) findViewById(R.id.choix_decategorie);
maCategorie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
MyDB db = new MyDB(MyActivityCategorie.this);
ArrayList<Category> categoryList = db.getCategory();
ChoiceCategoryDialog categoryDialog = new ChoiceCategoryDialog(MyActivityCategorie.this, R.string.add_category, mCategoryTextView.getText().toString(), categoryList, MyActivityCategorie.this, true);
categoryDialog.show();
}
});
由于
答案 0 :(得分:0)
试试这个例子:
LinearLayout yourLayout = (LinearLayout) findViewById (R.id.yourID);
yourLayout.setOnClickListener(new View.OnClickListener() { // remember to use "View."
@Override
public void onClick(View v) {
Toast.makeText(this, "hello", Toast.LENGTH_LONG).show();
}
});
设置LinearLayout属性android:clickable="true"
如果您在布局设置android:clickable="false"
中为所有这些设置了按钮或文本视图
答案 1 :(得分:0)
您必须设置LinearLayout clickable =“true”
<LineartLayout....
android:clickable="true"...>
这将有效
你需要在EditText中添加一些边距,因为EditText在LinearLayout上有优势,而且LinearLayout不能保留空格以便可点击。
把
<EditText
android:layout_margin="5dp".../>
答案 2 :(得分:0)
在你的代码中,你指的是R.id.choix_decategorie(你的代码中没有显示,这是你想在onClickListener上设置的LinearLayout吗?
对于具有子元素的LinearLayout(与您的一样) - 可能需要阻止子元素获得焦点 - 您可以像这样设置android:descendantFocusability="blocksDescendants"
:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/choix_decategorie"
android:id="@+id/lnpriceholderlabel"
android:descendantFocusability="blocksDescendants"
android:layout_marginTop="10dp" >
为了获得好的衡量标准,您还可以在每个子元素上设置android:clickable="false"
。所以你的布局看起来像这样:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/choix_decategorie"
android:id="@+id/lnpriceholderlabel"
android:descendantFocusability="blocksDescendants"
android:layout_marginTop="10dp" >
<EditText
android:text="@string/choix_de_categorie"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="italic"
android:clickable="false"
android:textSize="18sp"
android:textColor="#000" />
</LinearLayout>
尝试一下,让我们知道这是否有效。
答案 3 :(得分:0)
您的点击监听器将起作用,但您的编辑文本会隐藏线性布局,如果您删除它将起作用的编辑文本,或者您可以设置高度和宽度不等于线性布局。
答案 4 :(得分:0)
作为解决方法,您可以执行以下操作(kotlin代码):
editText.inputType = InputType.TYPE_NULL
editText.setOnClickListener { linearLayout.performClick() }
在这种情况下,editText将不会弹出键盘,而linearLayout将接收到click事件。