[XAMARIN] 가변길이 문자열 화면에 표현하기
2019. 5. 23. 22:42ㆍIT/C#
간단하게 날짜를 한국어랑 일본어로 읽는 방법을 표현해주는 어플을 만들어보겠다.
예를 들어 23일이면, "23 이십삼일 니쥬상" 같이 표현하고, 24일이면 "24 이십사일 니쥬욧까"로 표현한다. 날짜에 따라서 글자 크기가 자동으로 변하게 하려면 꼭 필요하다.
가변 길이 문자열 표시는 또한 스마트폰이 가로 모드 일때, 세로 모드일때 폭이 달라지므로 화면폭에 맞게 자동으로 글자 크기를 줄이면 디자인적으로도 매우 편리하다. 이게 없으면....각 문장마다 한번 실행하고 조절하고 이래야 된다. 수동적이기 때문에 이런 코드가 필요하다.
글자수에 따라서 한줄의 글자 크기를 자동으로 조절하는 방법은 아래와 같이 하면 된다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace JPDate
{
// Learn more about making custom code visible in the Xamarin.Forms previewer
// by visiting https://aka.ms/xamarinforms-previewer
[DesignTimeVisible(true)]
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
lbl01.Text = DateTime.Now.ToString("d");
string[] temp = lbl01.Text.Split('/');
if(temp[1] == "23")
{
lbl01.Text = temp[1] + " 이십삼일 " + " にじゅうさん ";
}
if (temp[1] == "24")
{
lbl01.Text = temp[1] + " 이십사일 " + " にじゅうよっか ";
}
this.SizeChanged += Handle_SizeChanged;
}
void Handle_SizeChanged(object sender, EventArgs e)
{
double screenWidth = this.Width * 0.8;
double charNumber = 0;
char[] chars = lbl01.Text.ToCharArray();
foreach (var item in chars)
{
if( (int)item >= 256) // Unicode
{
charNumber += 1;
}
else // Ascii code
{
charNumber += 0.5;
}
}
var fontSize = screenWidth / charNumber;
lbl01.FontSize = fontSize;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:JPDate" x:Class="JPDate.MainPage">
<StackLayout>
<!-- Place new controls here -->
<Label x:Name="lbl01" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" />
</StackLayout>
</ContentPage>
'IT > C#' 카테고리의 다른 글
[XAMARIN] Resource Dictionary 사용하기 (0) | 2019.06.02 |
---|---|
[XAMARIN] ContentView 만들기와 Tapped 이벤트 처리 (0) | 2019.05.29 |
[XAMARIN] App Life cycle과 환경 변수 (0) | 2019.05.25 |
[XAMARIN] Button 이벤트 (0) | 2019.05.25 |
[XAMARIN] 멀티뷰 - StatckLayout (0) | 2019.05.20 |
[XAMARIN] Label 사용방법 (0) | 2019.05.19 |
[XAMARIN] .net Standard에서 iOS, android, winPhone 구분하여 코딩하기 (0) | 2019.05.19 |
Xamarin - 로또 번호 생성기 (0) | 2019.04.21 |