在Android中,我在EditText旁边有一个EditText和一个Button,每当我按下一个时,我希望另一个也出现在同一状态。
我尝试在封闭布局上放置android:clickable =“true”,并在我的EditText和Button上安装android:duplicateParentState =“true”但这只有在触摸布局本身时才有效。如果我触摸我的EditText或按钮没有任何反应。我试着在EditText&上设置android:clickable =“false”。按钮但触摸事件仍然不会过滤到父级。
如何让我的观点对触摸事件透明,以便传递给父母?我想要的是EditText和Button一起工作,所以如果我触摸它们,它们都会被按下。
以下是我目前使用的XML:
<RelativeLayout
android:id = "@+id/EnclosingLayout"
android:layout_width = "fill_parent"
android:layout_height = "120dp"
android:clickable = "true">
<EditText
android:id = "@+id/MyEditText"
android:layout_width = "fill_parent"
android:layout_height = "wrap_content"
android:layout_weight = "1"
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
android:duplicateParentState="true"/>
<Button
android:id = "@+id/MyButton"
android:layout_alignTop="@id/MyEditText"
android:layout_alignBottom="@id/MyEditText"
android:layout_alignParentRight="true"
android:duplicateParentState="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_width="31.33dp"
android:gravity="center"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:clickable="false"/>
</RelativeLayout>
答案 0 :(得分:0)
我认为你想在RelativeLayout中使用android:focusable="true"
而不是可点击。我不确定你的意思是“我怎样才能让我的观点对触摸事件透明,以便传递给父母?”当您单击EditText时,您希望调用按钮onClick()吗?
答案 1 :(得分:0)
考虑将所有输入捕获到编辑文本和按钮,并将事件重定向到公共视图控制器,在本例中为常用方法。然后更新常用方法(视图控制器)中的编辑文本和按钮。对于编辑文本,您需要通过为两个事件创建处理程序来捕获触摸和单击,如下所示:
// EDIT TEXT ON TOUCH HANDLER
editTextPassword.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
SynchViews(); // view controller
break;
}
return true;
}
});
// EDIT TEXT ON Click HANDLER (No touch screen)
editTextPassword.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SynchViews(); // view controller
}
});