2014-09-04 9 views
8

Ho provato a regolare la larghezza del controllo casella [Entry] nella casella di testo & in Xamarin.Forms per iPad ma non imposta la larghezza utilizzando la proprietà WidthRequest.Come impostare la larghezza dei controlli in Xamarin.Forms

Qualcuno può aiutarmi per lo stesso su come impostare la larghezza dei controlli.

Ecco il mio codice di XAML per lo stesso utilizzando Grid & StackLayout ma nessuno di essi ha funzionato.

<Grid VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" > 
    <Grid.RowDefinitions> 
    <RowDefinition Height="Auto" ></RowDefinition> 
    <RowDefinition Height="*"></RowDefinition> 
    <RowDefinition Height="10"></RowDefinition> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 

    <Image Grid.Row="0" Grid.Column="0" Source="loginlogo.png"></Image> 
    <StackLayout Grid.Row="1" Grid.Column="0"> 
    <Entry Placeholder="Enter Username" WidthRequest="20"></Entry> 
    <Entry Placeholder="Enter Password" WidthRequest="20"></Entry> 
    <Button Text="Button 1"></Button> 
    </StackLayout> 
    </Grid> 

provato anche con la pila layout

<StackLayout Spacing="10"> 
    <Entry x:Name="txtUserName" Placeholder="Enter Username" WidthRequest="2" HeightRequest="200"></Entry> 
    <Entry x:Name="txtPassword" Placeholder="Enter Password" WidthRequest="2" HeightRequest="200"></Entry> 
    <Button Text="Button 1"></Button></StackLayout> 

risposta

24

Si noti che è necessario specificare HorizontalOptions con la WidthRequest per farlo funzionare su un stackLayout in quanto tenterà di auto- espandi per impostazione predefinita.

Esempio seguito oppure stackLayout: -

 StackLayout objStackLayout = new StackLayout() 
     { 
      Spacing = 10 
     }; 
     // 
     Entry objEntry1 = new Entry() 
     { 
      Placeholder = "Enter Username", 
      WidthRequest = 300, 
      HeightRequest = 200, 
      HorizontalOptions = LayoutOptions.Start 
     }; 
     objStackLayout.Children.Add(objEntry1); 
     // 
     Entry objEntry2 = new Entry() 
     { 
      Placeholder = "Enter Password", 
      WidthRequest = 200, 
      HeightRequest = 200, 
      HorizontalOptions = LayoutOptions.Start 
     }; 
     objStackLayout.Children.Add(objEntry2); 
     // 
     Button objButton1 = new Button() 
     { 
      Text = "Button1", 
      HorizontalOptions = LayoutOptions.Start 
     }; 
     objStackLayout.Children.Add(objButton1); 
+0

Grazie a @Pete. Questo ha funzionato per me. –

6

Uso StackLayout con combinazione di distanze, opzioni orizzontali/verticali e imbottiture. Esempio:

<StackLayout Padding="20" Spacing="10"> 
    <Entry Placeholder="Username" 
     VerticalOptions="Start" 
     HorizontalOptions="FillAndExpand" /> 

    <Entry Placeholder="Password" 
     VerticalOptions="Start" 
     HorizontalOptions="FillAndExpand" /> 

    <Button Text="Submit" VerticalOptions="EndAndExpand" /> 
</StackLayout> 
Problemi correlati