0

実寸画像でHeightRequestRelativeLayout)ポイントを取得する必要があります。私はサーバーからイメージを取得します。サイズは720x250です。私のコードを見てください。 すぐにお伝えします。 RelativeLayoutを使用する必要があります。Xamarin.Forms経由で実寸画像でHeightRequestポイント(RelativeLayout)を取得

<ListView 
       x:Name="EventsListView" 
       GroupDisplayBinding="{Binding EventGroupTitle}" 
       HasUnevenRows="True" 
       IsGroupingEnabled="True" 
       ItemTapped="ListView_OnItemTapped" 
       ItemsSource="{Binding GroupedItems}" 
       SeparatorVisibility="None"> 
       <ListView.GroupHeaderTemplate> 
       </ListView.GroupHeaderTemplate> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
         <ViewCell BindingContextChanged="BindableObject_OnBindingContextChanged"> 

          <RelativeLayout x:Name="RelativeLayout" Padding="0"> 
           <!-- Background picture --> 
           <controls:BExtendedCachedImage 
            x:Name="Picture" 
            Aspect="AspectFit" 
            CacheType="Disk" 
            DownsampleToViewSize="True" 
            LoadingPlaceholder="backgroundBlur" 
            RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToView, 
                          ElementName=RelativeLayout, 
                          Property=Height}" 
            RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToView, 
                          ElementName=RelativeLayout, 
                          Property=Width}" 
            Source="{Binding Picture}" /> 
          </RelativeLayout> 
         </ViewCell> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </ListView> 

Source="{Binding Picture}" - サーバーからの私の画像。 BindableObject_OnBindingContextChangedのコードでは、HeightRequestRelativeLayout)を変更する必要があります。しかし、私が手動で高さを設定しないと、セルは完全な高さに伸びます。 私のコードビハインドを見てください。

private void BindableObject_OnBindingContextChanged(object sender, EventArgs e) 
    { 
     var cell = (ViewCell) sender; 
     var layout = cell.View.FindByName<RelativeLayout>("RelativeLayout"); 
     var bc = (GroupEventsMapPageModel) BindingContext; 
     layout.HeightRequest = THIS_MANUALL_VALUE; 
    } 

どうすればTHIS_MANUALL_VALUEを手に入れられますか?

私はこのコード

var device = Resolver.Resolve<IDevice>(); 
     var display = device.Display; 
     return display.Scale; 

画像Height (250) \ display.Scaleを経由してみました - いけない仕事。 私はタブを作成します。 xxxhdpi装置(640 DPI) - 4(スケール) - layout.HeightRequest = 79; xxxhdpi装置(560 DPI) - 3.5(スケール) - layout.HeightRequest = 93; xhdpi装置(315 DPI) - 2(スケール) - layout.HeightRequest = 110; hdpiデバイス(240 DPI) - 1.5(Scale) - layout.HeightRequest = 165; しかし、私は対角線を変更するときに気づいた。 4.7 "xxhdpiデバイス(420 dpi) - 2.625(スケール) - layout.HeightRequest = 87; 5,2" xxhdpiデバイス(420 dpi) - 2.625(スケール) - layout.HeightRequest = 130;

+0

この質問はすべてここにあります。あなたは何の「高さ」を探していますか? –

+0

@ Joshua Poling、私はHeightRequest(Xamarinポイント)を探しています。例

答えて

0

あなたは高さを設定するために探している場合:あなたは、高さを得るために探しているなら

StackLayout _mainStack = new StackLayout{ HeightRequest = 40}; 

を:

var _stacksHeight = _mainStack.Height; 

最初は、この要素の所望の高さオーバーライドを取得または設定します。 2番目は_mainStackのレンダリングされた高さを取得するための読み取り専用プロパティです。

関連する問題