2017-01-09 13 views
0

私はscrollview/gridで作業しています!私のグリッドの中には、画像、ボタン、ラベルがあります。スクロールビュー/グリッド内の画像を画面の幅にフィットさせるにはどうすればいいですか?

このページでは、自分のデータベースから画像を収集します。つまり、あらかじめクリックしたカテゴリによって画像が異なります。これは、画像の高さと幅が必ずしも同じではないことを意味します。

一部の画像は通常の高さでフルスクリーンに表示されますが、画面の一部が表示されないものもあります。もし私がAspectFillをしたら、私はどちらも望んでいない写真のいくつかがチョップされます。私もFillを試しましたが、それは画像を伸ばします。

これは、私が働いているものです:

<ScrollView HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand" > 
    <StackLayout HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand"> 

    <Grid> 

     <Grid.RowDefinitions> 

      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 

     </Grid.RowDefinitions> 

     <StackLayout Grid.Row="0" BackgroundColor = "Red" HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand"> 

      <Image x:Name="theimage" Aspect = "AspectFit" HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand" /> 

      <Button Clicked="clickFunc" TextColor="White" Grid.Row="1" HeightRequest="80" WidthRequest="120" BorderRadius="40" HorizontalOptions="End" VerticalOptions="Start" /> 

     <StackLayout Grid.Row="1" Padding="10,20,10,0"> 

      <Label TextColor = "#474747" x:Name="title" Text="" HorizontalOptions="Start" FontFamily="Helvetica Neue" FontAttributes="Bold" /> 

     </StackLayout> 
     </StackLayout> 
    </Grid> 
    </StackLayout> 
    </ScrollView> 

私は問題を解決するために、これを実行しようとしました:

theimage.WidthRequest = App.ScreenWidth; 

そして、私はAppDelegeteからScreenWidthを得るが、だ、それを theimage変更されません。幅はまったくありません。私は、XAMLで、このように手動で番号を追加しようとした場合:

WidthRequest = "500" 

画像が変化しないか、それが画像に来るとき私は少しアイデアをしています。

画像を通常のサイズに保ちながら常に画面の幅にレイアウトするようにコードを調整するにはどうすればよいですか?

+0

まず、グリッドの行の高さはautoです。次に、RowDefinitionとColumnDefinitionの両方で高さの幅を固定することができます。つまり両方の値を50に設定し、問題に直面した場合は教えてください。 –

+0

よろしくお願いします。私はグリッドで作業するのが新しいので、私は100%確実ではない – Martman

+0

行の高さをAutoから '*'に変更する必要がありますか?私は ' \t \t \t \t \t \t \t \t'も、私は私のイメージでは 'Grid.Row =" 0を追加する必要があります追加しました「? – Martman

答えて

0

グリッドの正確な位置を特定するには、Grid.RowとGrid.Columnを割り当てる必要があります。私はこのようなあなたのコードに何か変更されました :(私は変更されている値のみがショーケースのためのものです)

<Grid.RowDefinitions> 

     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="100"/> 

    </Grid.RowDefinitions> 

    <StackLayout Grid.Row="0" BackgroundColor = "Red" HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand"> 

     <Image Grid.Row="1" x:Name="theimage" Aspect = "AspectFit" HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand" /> 

     <Button Clicked="clickFunc" TextColor="White" Grid.Row="1" HeightRequest="80" WidthRequest="120" BorderRadius="40" HorizontalOptions="End" VerticalOptions="Start" /> 

    <StackLayout Grid.Row="1" Padding="10,20,10,0"> 

     <Label TextColor = "#474747" x:Name="title" Text="" HorizontalOptions="Start" FontFamily="Helvetica Neue" FontAttributes="Bold" /> 

    </StackLayout> 
    </StackLayout> 
</Grid> 

あなたは、グリッドで動作することができますどのように、XAMLのドキュメントを参照してください。

http://www.dailyfreecode.com/code/grid-layout-xaml-212.aspx http://www.c-sharpcorner.com/uploadfile/mahesh/grid-in-wpf/

:あなたが行定義を提供しなければならないと同じことが、同様列定義に適用されるすべての行のために。

+0

あなたのコードを使用していますが、画像はまだ画面の幅に調整されません – Martman

+0

いくつかの画像はありますが、一部はありません – Martman

+0

\t \t \t '同様に' width.Width = App.ScreenWidth; 'をコードに入れてください。しかし、まだ変更はありません – Martman

関連する問題