我有一个自定义的“完整框”,显示在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;
}
}
}
}
可悲的是,如果到目前为止这一切都没有。
这是一个截图,其中绿色是外部布局,蓝色是内部。
修改 我实现了内部rl(蓝色的)现在适合按钮的整个背景,它仍然无法识别点击次数...
EDIT2: 我现在发现外部相对布局的区域是唯一可以识别点击的地方。我只是使按钮与外部相对布局重叠,而它们仍然是内部相对布局的子项,并且在那里它们变得可点击。我必须找出,如何使外部相对布局下的区域可以点击...