2014-08-27 3 views
3

View의 높이를 Xamarin.Forms에 정확하게 설정하고 싶습니다. 예를 들어, Label은 텍스트만큼만 높이기를 원합니다.보기의 높이/너비 (예 : 레이블)를 Xamarin.Forms의 내용 크기로 설정하는 방법은 무엇입니까?

나는 layout_height="wrap_content"과 같은 것을 할 수 있습니다. 비슷한 것이 있습니까 Xamarin.Forms? 이 경우 HeightRequest을 사용할 수 있습니까? 그렇다면 어떻게해야합니까? 대신 라벨 같은 특정 뭔가, 보기 언급 할 때

답변

2

이것은 매우 광범위한 질문이다, 그래서 다른 보기 시나리오에서 고려해야 할 몇 가지 사항이 있습니다 : -

당신은 HorizontalOptions를 사용할 수는VerticalOptions 보기 개체의 특성이에 도움, 즉 는 LayoutOptions.FillAndExpand 또는 LayoutOptio ns.CenterAndExpand

예 - 당신은 HeightRequest보기에 WidthRequest 높이을 통해 보기 예약 할 수있는 지역으로 환경 설정을 표시하기 위해 지정할 수 있습니다 레이아웃 (보장되지는 않지만) 사용 된 다른 레이아웃 컨트롤/뷰에 따라 다릅니다. 우리가 라벨 제어에 구체적으로 이야기하는 경우

, 이것은 당신이 생각 지정한 부모 보기에 맞게, 사용되는 특정 라벨 글꼴 크기, 텍스트 크기를 확대하지 않습니다. 이를 위해 당신이에서 사용되는 컨테이너에 라벨의 크기를 조절하는 데 적절하게 규모 속성을 설정해야합니다

업데이트 1 : -.

를 다음 예제 코드를 사용하여, 표시되는 레이블 높이 텍스트에 맞게 높이가 이미 자동으로 변경 되었습니까?

 StackLayout cobjStackLayout = new StackLayout() 
     { 
      Orientation = StackOrientation.Vertical 
     }; 

     Label objLabel1 = new Label(); 
     objLabel1.BackgroundColor = Color.Red; 
     objLabel1.Text = "This is a label"; 
     cobjStackLayout.Children.Add(objLabel1); 

     Label objLabel2 = new Label(); 
     objLabel2.BackgroundColor = Color.Green; 
     objLabel2.Text = "This is another label with different font size"; 
     objLabel2.Font = Font.OfSize("Arial", 48); 
     cobjStackLayout.Children.Add(objLabel2); 


     this.Content = cobjStackLayout; 

업데이트 2 : - 예 - 당신은 그냥 라벨을 사용하는 경우 ContentPage의 끝에 수직으로 예기치 않은 충전, 즉 발생하고있다.

당신이하려고하면 당신이 단지 1 라벨을 사용하여, 이후에 무엇인가, 단지 텍스트 주위에, 경험해야 다음 -

 cobjStackLayout = new StackLayout() 
     { 
      Orientation = StackOrientation.Horizontal, 
      VerticalOptions = LayoutOptions.Start 
     }; 

     Label objLabel1 = new Label(); 
     objLabel1.BackgroundColor = Color.Red; 
     objLabel1.Text = "This is a label"; 
     cobjStackLayout.Children.Add(objLabel1); 

     this.Content = cobjStackLayout; 

업데이트 3 : - 여기

입니다 HorizontalOptions/VerticalOptions를 설정하기 위해 부모를 사용하지 않는 버전이기 때문에 계층 구조의 다른 부분에 지정된 LayoutOptions가 출력에 영향을 미친다는 점을 조금 더 분명하게 알 수 있습니다. -

012 3,516,
 cobjStackLayout = new StackLayout() 
     { 
      Orientation = StackOrientation.Horizontal, 
     }; 

     Label objLabel1 = new Label(); 
     objLabel1.BackgroundColor = Color.Red; 
     objLabel1.Text = "This is a label"; 
     objLabel1.HorizontalOptions = LayoutOptions.Start; 
     objLabel1.VerticalOptions = LayoutOptions.Start; 
     cobjStackLayout.Children.Add(objLabel1); 


     this.Content = cobjStackLayout; 

은 때때로 당신이 원하는 효과를 얻기 위해 제어에 관심이되는 보기HorizontalOptions 또는 VerticalOptions을 설정하기 위해 충분하지 기억하십시오.

+0

내 질문에 오해 하셨을 것입니다. 부모 내에서 하위 뷰를 확장하고 싶지 않습니다. 나는 단지 자신의 레이블이 텍스트보다 정확히 높을 것을 원한다. – kaolick

+0

의견에 따라 추가 정보/코드를 포함하도록 답을 편집했습니다. – Pete

+0

하나의'Label'만으로 그것을 시도하고'StackLayout'의 방향을 수평으로 변경하십시오. 내가 무슨 뜻인지 알게 될거야. 레이블은 전체 화면을 채 웁니다. 그러나 텍스트 만 감싸기를 원합니다. – kaolick