Как добавить отступы в SearchBar внутри Horizontal StackLayout?

Для какой-то цели я хочу расположить SearchBar внутри StackLayout, Orientation которого является Horizontal, и добавить отступы к этому StackLayout, но я обнаружил, что SearchBar занимает все пространство ширины, как показано во втором SearchBar, а когда Orientation равно Vertical, он работает нормально, как показано в первом SearchBar изображение ниже:

введите здесь описание изображения

Вот код для обоих StackLayouts:

    <StackLayout Orientation="Vertical" Padding="100,0,100,0">
        <SearchBar/>
    </StackLayout>

    <StackLayout Orientation="Horizontal" Padding="100,0,100,0">
        <SearchBar/>
    </StackLayout>

Я также попытался поместить горизонтально-ориентированный StackLayout в вертикально-ориентированный StackLayout, как показано в коде ниже:

    <StackLayout Orientation="Vertical" Padding="100,0,100,0">
        <StackLayout Orientation="Horizontal">
            <SearchBar/>
        </StackLayout>
    </StackLayout>

Но это тоже не помогает, так как решить эту проблему?


person Ahmed Salah    schedule 16.12.2018    source источник
comment
Ваш вопрос во многом смущает меня, можете ли вы просто сказать мне, чего именно вы пытаетесь достичь.   -  person FreakyAli    schedule 17.12.2018


Ответы (1)


Причина. Когда вы добавляете панель поиска в stackLayout , stackLayout подпредставление не соответствует размеру. Итак, хотя вы установили padding .SearchBar все равно будет за границей stackLayout.

Решение:

Поместите срачБар в файл Grid.

<StackLayout  Orientation="Horizontal"  Padding="100,0,100,0">
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="*" /> 
    </Grid.RowDefinitions>

   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="175" />                   
   </Grid.ColumnDefinitions>

   <SearchBar Grid.Row="0" Grid.Column="0" />

  </Grid>

</StackLayout> 
person Lucas Zhang    schedule 17.12.2018