Android Xamarin按钮在网格内不可单击

Android Xamarin按钮在网格内不可单击,android,xamarin.forms,xamarin.android,Android,Xamarin.forms,Xamarin.android,我刚接触移动开发,这是我第一次发表看法。据我所知,这个按钮在网格内是不可点击的。我试着用StackLayout包装网格,并寻找一个我找不到的解决方案 Documentos.xaml代码: <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns

我刚接触移动开发,这是我第一次发表看法。据我所知,这个按钮在网格内是不可点击的。我试着用StackLayout包装网格,并寻找一个我找不到的解决方案

Documentos.xaml代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:viewModels="clr-namespace:AppQ4evo.Models"
             x:Class="AppQ4evo.Views.Documentos" 
             BackgroundColor="White"> 

    <ContentPage.BindingContext>
        <viewModels:DocumentsBindingModel />
    </ContentPage.BindingContext>

    <ContentPage.ToolbarItems>
        <ToolbarItem x:Name="iconAttach" Order="Primary" Icon="attach.png" Priority="-1" />
    </ContentPage.ToolbarItems>

    <!--<AbsoluteLayout Padding="0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">-->
    <Grid x:Name="docs" Padding="-2" BackgroundColor="Aquamarine">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <StackLayout Margin="10,20">
            <Label Text="Data Documento: "/>
            <Label Text="Número externo: "/>
            <Label Text="Fornecedor: "/>
        </StackLayout>

        <StackLayout Margin="0,100">
                <Button x:Name="btnAdd" Text="Adicionar" Clicked="btnAddPopup_Clicked" />
        </StackLayout>

        <Grid x:Name="ListViewHeaders" Margin="0,170,0,0">
            <Grid.RowDefinitions>
                <RowDefinition Height="40"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="60" />
                <ColumnDefinition Width="65" />
                <ColumnDefinition Width="80" />
                <ColumnDefinition Width="25" />
                <ColumnDefinition Width="60" />
            </Grid.ColumnDefinitions>
            <BoxView Color="Black" Grid.Row="0" Grid.ColumnSpan="8" HeightRequest="0.5" />
            <BoxView Color="DimGray"  Grid.Row="0" Grid.ColumnSpan="8" />
            <Label Grid.Column="1" Text="Produto" XAlign="Center" YAlign="Center" TextColor="White" FontAttributes="Bold" FontSize="Small"/>
            <Label Grid.Column="2" Text="Descrição" XAlign="Center" YAlign="Center" TextColor="White" FontAttributes="Bold" FontSize="Small"/>
            <Label Grid.Column="3" Text="Observação" XAlign="Center" YAlign="Center" TextColor="White" FontAttributes="Bold" FontSize="Small"/>
            <Label Grid.Column="4" Text="Qtd" XAlign="Center" YAlign="Center" TextColor="White" FontAttributes="Bold" FontSize="Small"/>
            <Label Grid.Column="5" Text="Valor Unitário" XAlign="Center" YAlign="Center" TextColor="White" FontAttributes="Bold" FontSize="Small"/>
            <Label Grid.Column="6" Text="IVA" XAlign="Center" YAlign="Center" TextColor="White" FontAttributes="Bold" FontSize="Small"/>
        </Grid>
        <AbsoluteLayout x:Name="absLayout" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
            <ListView x:Name="DocumentsList" ItemsSource="{Binding DocumentosList}"
                  HasUnevenRows="True"
                  Margin="0,209" BackgroundColor="White" HeightRequest="{Binding Path=Height, Source={x:Reference absLayout}}"
                  WidthRequest="{Binding Path=Width, Source={x:Reference absLayout}}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="30"></RowDefinition>
                                    </Grid.RowDefinitions>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="30"></ColumnDefinition>
                                        <ColumnDefinition Width="50"></ColumnDefinition>
                                        <ColumnDefinition Width="70"></ColumnDefinition>
                                        <ColumnDefinition Width="80"></ColumnDefinition>
                                        <ColumnDefinition Width="30"></ColumnDefinition>
                                        <ColumnDefinition Width="50"></ColumnDefinition>
                                        <ColumnDefinition Width="45"></ColumnDefinition>
                                    </Grid.ColumnDefinitions>
                                    <Label Grid.Row="0" Grid.Column="1" Text="{Binding Produto}" XAlign="Center" YAlign="Center" TextColor="Black" FontAttributes="Bold"/>
                                    <Label Grid.Row="0" Grid.Column="2" Text="{Binding Descricao}" XAlign="Center" YAlign="Center" TextColor="Black" FontAttributes="Bold"/>
                                    <Label Grid.Row="0" Grid.Column="3" Text="{Binding Observacao}" XAlign="Center" YAlign="Center" TextColor="Black" FontAttributes="Bold"/>
                                    <Label Grid.Row="0" Grid.Column="4" Text="{Binding Quantidade}" XAlign="Center" YAlign="Center" TextColor="Black" FontAttributes="Bold"/>
                                    <Label Grid.Row="0" Grid.Column="5" Text="{Binding ValorUnitario}" XAlign="Center" YAlign="Center" TextColor="Black" FontAttributes="Bold"/>
                                    <Label Grid.Row="0" Grid.Column="6" Text="{Binding Iva}" XAlign="Center" YAlign="Center" TextColor="Black" FontAttributes="Bold"/>
                                </Grid>
                            </ViewCell.View>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </AbsoluteLayout>
    </Grid>
    <!--<ContentView x:Name="popupAddDocumentView" BackgroundColor="White" Padding="10,0" IsVisible="false" AbsoluteLayout.LayoutBounds="0,0,1,1">
                <StackLayout VerticalOptions="Center" HorizontalOptions="Center">
                    <StackLayout Orientation="Vertical" HeightRequest="240" WidthRequest="300" BackgroundColor="White">
                        <Image HorizontalOptions="End" Source="close.png" HeightRequest="20" WidthRequest="20">
                            <Image.GestureRecognizers>
                                <TapGestureRecognizer Tapped="OnImageNameTapped_ClosePopup" NumberOfTapsRequired="1" />
                            </Image.GestureRecognizers>
                        </Image>
                        <Entry x:Name="ProdutoEntry" Margin="20,0,20,0" Placeholder="Introduza o produto" />
                        <Button x:Name="btnAddDocument" Margin="20,0,20,0" Clicked="btnAddDocument_Clicked" Text="Adicionar" />
                    </StackLayout>
                </StackLayout>
            </ContentView>
        </AbsoluteLayout>-->
</ContentPage>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace AppQ4evo.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Documentos : ContentPage
    {

        DocumentsBindingModel documents;

        public Documentos()
        {
            InitializeComponent();
            documents = new DocumentsBindingModel();
        }

        private void btnAddPopup_Clicked(object sender, EventArgs e)
        {
            Console.WriteLine("Olá Tren");
            //popupAddDocumentView.IsVisible = true;
        }

        private void OnImageNameTapped_ClosePopup(object sender, EventArgs e)
        {
            try
            {
                //popupAddDocumentView.IsVisible = false;
            }
            catch (Exception ex)
            {

            }
        }

        private void btnAddDocument_Clicked(object sender, EventArgs e)
        {
            //popupAddDocumentView.IsVisible = false;
            //DocumentosModel documentosBindingModel = new DocumentosModel() { Produto = ProdutoEntry.Text };
            //documents.DocumentosList.Add(documentosBindingModel);

            //BindingContext = documents;
            //DocumentsList.IsRefreshing = false;
        }
    }
}
有办法解决这个问题吗


最好的问候

正如Jason所说,一种方法是指定网格的行

<Grid
    x:Name="docs"
    Padding="-2"
    BackgroundColor="Aquamarine">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <StackLayout Grid.Row="0" Margin="10,20">
        <Label Text="Data Documento: " />
        <Label Text="Número externo: " />
        <Label Text="Fornecedor: " />
    </StackLayout>

    <StackLayout Grid.Row="1" Margin="0,100">
        <Button
            x:Name="btnAdd"
            Clicked="btnAddPopup_Clicked"
            Text="Adicionar" />
    </StackLayout>

    <Grid
        x:Name="ListViewHeaders"
        Grid.Row="2"
        Margin="0,170,0,0">             
       ........
    </Grid>
    <AbsoluteLayout
        x:Name="absLayout"
        Grid.Row="3"
        HorizontalOptions="FillAndExpand"
        VerticalOptions="FillAndExpand">           
        ........             
    </AbsoluteLayout>
</Grid>

........
........             
另一种方法是使用StackLayout而不是Grid

 <StackLayout
    x:Name="docs"
    Padding="-2"
    BackgroundColor="Aquamarine">
  

    <StackLayout   Margin="10,20">
        <Label Text="Data Documento: " />
        <Label Text="Número externo: " />
        <Label Text="Fornecedor: " />
    </StackLayout>

    <StackLayout  Margin="0,100">
        <Button
            x:Name="btnAdd"
            Clicked="btnAddPopup_Clicked"
            Text="Adicionar" />
    </StackLayout>

    <Grid
        x:Name="ListViewHeaders"
   
        Margin="0,170,0,0">
        ..........
    </Grid>
    <AbsoluteLayout
        x:Name="absLayout"
        
        HorizontalOptions="FillAndExpand"
        VerticalOptions="FillAndExpand">
      ..........
    </AbsoluteLayout>
</StackLayout>

..........
..........

您将多个图元放置在网格中,但没有指定行/列值,因此它们只是在同一单元格中彼此重叠放置。你的按钮是不可点击的,因为它被其他元素所覆盖。谢谢你的提示,帮助我了解如何使用里面有很多东西的网格!没错,正如乔丹所说。谢谢你的例子帮我解决了这个问题!很乐意帮忙。别忘了接受答案。蒂纳克斯~