0

HeightRequest (RelativeLayout) 포인트를 실제 사이즈 이미지로 입력해야합니다. 나는 서버로부터 이미지를 얻는다. 크기는 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의 코드에서 HeightRequest (RelativeLayout)을 변경해야합니다. 그러나 높이를 수동으로 설정하지 않으면 셀이 최대 높이까지 늘어납니다. 내 코드 숨김을 살펴보십시오.

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 장치 (420dpi) - 2.625 (저울) - layout.HeightRequest = 87; 5,2"xxhdpi 장치 (420dpi) - 2.625 (저울) - layout.HeightRequest = 130; 수식을 얻도록 도와주세요.

+0

이 질문은 여기 저기에 있습니다. "높이"는 무엇을 찾고 있습니까? –

+0

@ Joshua Poling, HeightRequest (Xamarin point)를 찾고 있습니다. 예를 들어

답변

0

당신은 높이 설정하고자하는 경우 : 당신이 높이 얻을 찾고 있다면

StackLayout _mainStack = new StackLayout{ HeightRequest = 40}; 

을 :

var _stacksHeight = _mainStack.Height; 

첫 번째는 도착를이 요소의 원하는 높이 재정의 설정 . 두 번째는 렌더링 된 _mainStack 높이를 가져 오는 읽기 전용 속성입니다.

관련 문제