RelativeLayout中的Xamarin.Forms.RelativeLayout不会收到点击事件

时间:2018-01-15 12:16:02

标签: c# android xamarin.android onclick android-relativelayout

我有一个自定义的“完整框”,显示在Android.Widget.EditText下方。 它基本上是一个 RelativeLayout with Buttons 作为子视图,所有这些都在ContentView中

我的层次结构如下 (其中RelativeLayout是Xamarin.Forms.RelativeLayout)

ContentView
    |-RelativeLayout
        |- EditText
        |- RelativeLayout (*)
            |- BoxView
            |- Button(s)

(*)孩子RelativeLayout 未接收任何点击手势。 我尝试为子相对布局创建自定义渲染器( Android )并将其设置为子(按钮)到(Android.Views).Clickable = true。 我还尝试设置Z-Order并将Click事件附加到Xamarin.Forms文件以及自定义渲染器中

我的自定义渲染器 (ViewRenderer< Xamarin.Forms.RelativeLayout,Android.Views.View>)

void SetupClickableState()
{
var renderer = Platform.GetRenderer(Element);

//None of the follow code makes my relative layout receive click events
renderer.View.Clickable = false;
renderer.View.ContextClickable = false;
renderer.ViewGroup.Clickable = false;
renderer.ViewGroup.ContextClickable = false;
renderer?.View?.SetZ(-999); //setting it to a positive value sets it behind my other views.

renderer.View.Click += View_Click;
renderer.ViewGroup.Click += ViewGroup_Click;

        if(renderer != null && renderer.ViewGroup != null)
        {
            var viewGroup = renderer.ViewGroup;

            viewGroup.ChildViewAdded += ViewGroup_ChildViewAdded;
            for(int i = 0; i < viewGroup.ChildCount; i++)
            {
                var child = viewGroup.GetChildAt(i);

                if(child != null)
                {
                    child.SetZ(-9999);
                    child.Clickable = true;
                    child.ContextClickable = false;
                    child.Click += Child_Click;
                }
            }
        }
}

可悲的是,如果到目前为止这一切都没有。

这是一个截图,其中绿色是外部布局,蓝色是内部。

enter image description here

修改 我实现了内部rl(蓝色的)现在适合按钮的整个背景,它仍然无法识别点击次数...

EDIT2: 我现在发现外部相对布局的区域是唯一可以识别点击的地方。我只是使按钮与外部相对布局重叠,而它们仍然是内部相对布局的子项,并且在那里它们变得可点击。我必须找出,如何使外部相对布局下的区域可以点击...

0 个答案:

没有答案