2016-10-02 2 views
1

그래서 나는 XAML에 다음 코드를 가지고 :stacklayout의 탭 영역을 확장하여 뷰 셀의 높이를 차지하는 방법은 무엇입니까?

내 C# 코드에서
<TableView Intent="Settings"> 
    <TableRoot> 
     <TableSection Title="Card Front Side"> 
     <ViewCell> 
      <StackLayout x:Name="englishSide" Padding="20,0,20,0" 
         BackgroundColor="Red" 
         Orientation="Horizontal" VerticalOptions="Center"> 
       <Label Text="English" XAlign="Center"/> 
       <Image x:Name="englishImage" Source="check.png" 
         HorizontalOptions="EndAndExpand" IsVisible="false" /> 
      </StackLayout> 
      </ViewCell> 
     </TableSection> 
    </TableRoot> 
</TableView> 

나는 탭 이벤트 처리하기 위해 다음과 같은 코드를 가지고 : 나는 눈치 행에 탭하면 이제

englishSide.GestureRecognizers.Add(new TapGestureRecognizer 
{ 
    NumberOfTapsRequired = 1, 
    Command = new Command(() => 
    { 
     englishImage.IsVisible = true; 
     App.Database.UpdateSettings((int)Lang.English, "CardFrontSide"); 
    }) 
}); 

을 즉시 내 탭에 응답하지 않습니다. 그 다음 탭핑 이벤트가 적용될 수있는 영역이 아래 이미지 (빨간색 배경이있는 영역)에 표시된 것처럼 행의 전체 높이를 차지하지 않는다는 것을 깨달았습니다.

enter image description here

사람이 제가가 ViewCell의 높이를 변경하지 않고 전체 행/ViewCell 높이를 점유 할 수있는 방법을 알려 수 있습니까? 감사합니다

답변

1

귀하의 StackLayoutVerticalOptions는 "그냥 당신에게 감사 어딘가에 중간에 거기? 거기에 그 공간을 참조하십시오"를 의미하는 "Center"로 설정됩니다.
즉, StackLayout은 필요한 것보다 더 많은 공간을 차지하지 않습니다. 당신이 (ListView.RowHeight에 의해 정의되는) 셀의 높이를 채우기 위해 당신에게 StackLayout을 원하는 경우에

, 당신은 (당신은 CenterAndExpand 또는 Fill 충분히 될 경우 내가 여기에 확실 해요, 서로 다른 값을 시도 할 수 있습니다) FillAndExpand로 설정해야 .

<TableView Intent="Settings"> 
    <TableRoot> 
     <TableSection Title="Card Front Side"> 
     <ViewCell> 
      <StackLayout VerticalOptions="FillAndExpand" 
         x:Name="englishSide" 
         Padding="20,0,20,0" 
         BackgroundColor="Red"> 
       <StackLayout Orientation="Horizontal" VerticalOptions="CenterAndExpand"> 
       <Label Text="English" XAlign="Center"/> 
       <Image x:Name="englishImage" Source="check.png" 
         HorizontalOptions="EndAndExpand" IsVisible="false" /> 
       </StackLayout> 
      </StackLayout> 
      </ViewCell> 
     </TableSection> 
    </TableRoot> 
</TableView> 
+0

감사 @Thibault : CenterAndExpand 작동하지 않는 경우

, 당신은 당신의 상하 중앙에 텍스트를 유지 그래서 FillAndExpand와 다른 StackLayoutVerticalOptions="Center"StackLayout을 포장 할 수있다. 그러나 이것은 효과가없는 것 같습니다. 바깥 쪽의'StackLayout'에있는'FillAndExpand'는'ViewCell'의 높이를 차지하는 트릭을합니다. 그러나 문제는 'VerticalOptions = "Center"가 작동하지 않는 내부 StackLayout입니다. 텍스트가 더 이상 가운데에 있지 않습니다. –

+0

@iamsophia에 사과합니다. 코드를 테스트하지 않았습니다. :) 이제 테스트 해 보았습니다. 당신이 변경해야 할 유일한 것은'Center'에서'CenterAndExpand'까지 내부 StackLayout의'VerticalOptions'입니다. –

관련 문제