Я использую Xamarin Forms, и события в элементах внутри относительного макета не запускаются. Я также попытался зарегистрировать их в коде позади, но все еще не стрелял. У меня ограничение -250, потому что кнопки отображались внизу экрана, и это был единственный способ их переместить вверх. Вот мой xaml:

 <StackLayout Orientation="Vertical">
    <RelativeLayout>
        <Grid Margin="0,0,10,0"
              x:Name="grid"
              RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Y, Factor=0, Constant=10}" 
              RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=X, Factor=0, Constant=0}" 
              >


        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50*" />
            <ColumnDefinition Width="50*" />
        </Grid.ColumnDefinitions>

        <Label Grid.Column="0"
               Grid.Row="0"
                Text="IP Address"
               Margin="10,10,0,0"
               HorizontalOptions="StartAndExpand"/>
        <Entry Grid.Column="1"  
               Grid.Row="0"
            x:Name="IPAddress"
            Placeholder="IP"
               WidthRequest="200"

                Margin="0,0,10,0"
            HorizontalOptions="EndAndExpand"/>
        <Label Grid.Column="0"
               Grid.Row="1"
                Text="Port"
               Margin="10,10,0,0"
               MinimumWidthRequest="100"
               HorizontalOptions="Start"/>
        <Entry Grid.Column="1"  
               Grid.Row="1"
            x:Name="Port"
               Margin="0,0,10,0"
            Placeholder="Port"
                WidthRequest="200"
            HorizontalOptions="End"/>
        <Label Grid.Column="0"
               Grid.Row="2"
               Margin="10,10,0,0"
                Text="User Name"
               MinimumWidthRequest="100"
               HorizontalOptions="Start"/>
        <Entry Grid.Column="1"  
               Grid.Row="2"
            x:Name="UserName"
               Margin="0,0,10,0"
                WidthRequest="200"
            Placeholder="User Name"
            HorizontalOptions="End"/>
        <Label Grid.Column="0"
               Grid.Row="3"
               Margin="10,10,0,0"
                Text="Password"
               MinimumWidthRequest="100"
               HorizontalOptions="Start"/>
        <Entry Grid.Column="1"  
               Grid.Row="3"
            x:Name="Password"
               IsPassword="True"
               Margin="0,0,10,0"
                WidthRequest="200"
            Placeholder="Password"
            HorizontalOptions="End"/>

        </Grid>

    </RelativeLayout>
    <RelativeLayout
        IsEnabled="True">
        <Button x:Name="SaveBtn"
                IsEnabled="True"
                WidthRequest="100"
                RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Y, Factor=0, Constant=-250}"
                RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=X, Factor=0, Constant=30}"
                Clicked="SaveBtn_Clicked"
                BorderColor="Gray"
                Text="Save"></Button>
        <Button x:Name="ClearFavorites"
                IsEnabled="True"
                WidthRequest="120"
                RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Y, Factor=0, Constant=-250}" 
                RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=0.5, Constant=20}"
                Clicked="ClearFavorites_Clicked"
                BorderColor="Gray"
                Text="Clear Favorites"></Button>
    </RelativeLayout>
</StackLayout>
0
JP Hochbaum 27 Июн 2017 в 19:13
1
Покажите свой код с определенным SaveBtn_Clicked
 – 
Yuri S
27 Июн 2017 в 19:42
Ваши ограничения убирают кнопки с экрана. Когда я настраиваю их для просмотра кнопок, я получаю оба события щелчка
 – 
Yuri S
27 Июн 2017 в 19:48
Какое устройство вы используете? Тестирую на 5с и 6, а кнопки на экране.
 – 
JP Hochbaum
27 Июн 2017 в 19:55
Симулятор Android 5 # зефир. Каким образом на экране может отображаться константа Y = -250?
 – 
Yuri S
27 Июн 2017 в 20:05
Кнопки появлялись в самом низу моего экрана. Добавление ограничения -250 было единственным способом, которым я мог перемещать их по вертикали.
 – 
JP Hochbaum
27 Июн 2017 в 20:10

1 ответ

Лучший ответ

После обсуждения в чате это похоже на работу

<StackLayout Orientation="Vertical"> 
<RelativeLayout> 
<Grid Margin="0,0,10,0" 
x:Name="grid" 
RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Y, Factor=0, Constant=10}" 
RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=X, Factor=0, Constant=0}" 
> 


<Grid.RowDefinitions> 
<RowDefinition Height="Auto"/> 
</Grid.RowDefinitions> 
<Grid.ColumnDefinitions> 
<ColumnDefinition Width="50*" /> 
<ColumnDefinition Width="50*" /> 
</Grid.ColumnDefinitions> 

<Label Grid.Column="0" 
Grid.Row="0" 
Text="IP Address" 
Margin="10,10,0,0" 
HorizontalOptions="StartAndExpand"/> 
<Entry Grid.Column="1" 
Grid.Row="0" 
x:Name="IPAddress" 
Placeholder="IP" 
WidthRequest="200" 

Margin="0,0,10,0" 
HorizontalOptions="EndAndExpand"/> 
<Label Grid.Column="0" 
Grid.Row="1" 
Text="Port" 
Margin="10,10,0,0" 
MinimumWidthRequest="100" 
HorizontalOptions="Start"/> 
<Entry Grid.Column="1" 
Grid.Row="1" 
x:Name="Port" 
Margin="0,0,10,0" 
Placeholder="Port" 
WidthRequest="200" 
HorizontalOptions="End"/> 
<Label Grid.Column="0" 
Grid.Row="2" 
Margin="10,10,0,0" 
Text="User Name" 
MinimumWidthRequest="100" 
HorizontalOptions="Start"/> 
<Entry Grid.Column="1" 
Grid.Row="2" 
x:Name="UserName" 
Margin="0,0,10,0" 
WidthRequest="200" 
Placeholder="User Name" 
HorizontalOptions="End"/> 
<Label Grid.Column="0" 
Grid.Row="3" 
Margin="10,10,0,0" 
Text="Password" 
MinimumWidthRequest="100" 
HorizontalOptions="Start"/> 
<Entry Grid.Column="1" 
Grid.Row="3" 
x:Name="Password" 
IsPassword="True" 
Margin="0,0,10,0" 
WidthRequest="200" 
Placeholder="Password" 
HorizontalOptions="End"/> 

</Grid> 

</RelativeLayout> 
<RelativeLayout 
IsEnabled="True"> 
<Button x:Name="SaveBtn" 
IsEnabled="True" 
WidthRequest="100" 
RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Y, Factor=0, Constant=50}" 
RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=X, Factor=0, Constant=30}" 
Clicked="SaveBtn_Clicked" 
BorderColor="Gray" 
Text="Save"></Button> 
<Button x:Name="ClearFavorites" 
IsEnabled="True" 
WidthRequest="120" 
RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Y, Factor=0, Constant=50}" 
RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=0.5, Constant=20}" 
Clicked="ClearFavorites_Clicked" 
BorderColor="Gray" 
Text="Clear Favorites"></Button> 
</RelativeLayout> 
</StackLayout>
1
Yuri S 4 Июл 2017 в 18:47