28 Aralık 2016 Çarşamba

Xamarin.Forms Android Sorunları 4 - Birinci kez derlediğimde hata veriyor bir sürü, ikincide derliyor, çalıştırdığımda Cannot deploy diyor...

Birincisi 32bit java kur güzel kardeşim.
İkincisi Visual Studio > Tools > Options > Xamarin kısmından JDK'nın yerini yeni kurduğun bu 32 bit'e göster.
Üçüncüsü de
Windows için c:\Users\KullanıcıAdın\AppData\Local\Xamarin\ klasöründeki
Mac için ~/.local/share/Xamarin/ klasöründeki
herşeyi sil ve Visual Studio'dan Clean All yap.
Umarım çalışır :)

13 Aralık 2016 Salı

Xamarin.Forms Android Sorunları 3 - Her derlediğimde bir java class veya build sorunu alıyorum

Evet ve biliyorum çıldırmak üzeresin.
Öncelikle Mac'te

klasörüne git. Dosyaların hepsini sil. Sonra Visual Studio (Windows) veya Xamarin Studio'dan (Mac) Build > Clean All çek. Sonra da yeniden Rebuild All yap. Muhtemelen birşeyler düzelecektir.

Xamarin.Forms Android Sorunları 2 - SDK ayarlarım bir türlü tutmuyor.

Götü düzeliyor başı oynuyor başı düzeliyor götü oynuyor...
O zaman sadece aşağıdaki resimdekileri kurarak dene.
Ayrıca bu paketlerin tamamını kurduktan sonra
Androrid projesi sağ tuş > Options > Android Application > Minimum Android Version ve Target Android version'ları birkez daha bırkalayıp Automatic'e al. Alet 24 api versiyonuna kendini ayarlayacak...



Xamarin.Forms Android Sorunları 1 - Emulatör'üm çalışmayorrr

Eğer emulator açılmıyorsa güzel kardeşim, sil cihazı hatta tüm cihazları sil yeniden bir emulator kur
Adını orjinaline uysun diye "Android_Accelerated_x86" yap. Memory 1024 ver Heap istiyorsa ona da bonkör davran 256 mb ver. "Use GPU" de x86'lı birşeyler seç en yukardan da ve Google API ile kombine et. Tikir tikir...


27 Kasım 2016 Pazar

SKSurface kullanımı

            using (var surface = SKSurface.Create(200, 200, SKColorType.Rgba8888, SKAlphaType.Unpremul))
            {
                surface.Canvas.Clear(SKColors.White);

                using (var paint = new SKPaint())
                {
                    paint.IsAntialias = true;
                    paint.Color = new SKColor(0x2c, 0x3e, 0x50);
                    paint.StrokeCap = SKStrokeCap.Round;

                    // create the Xamagon path
                    using (var path = new SKPath())
                    {
                        path.MoveTo(71.4311121f, 56f);
                        path.CubicTo(68.6763107f, 56.0058575f, 65.9796704f, 57.5737917f, 64.5928855f, 59.965729f);
                        path.LineTo(43.0238921f, 97.5342563f);
                        path.CubicTo(41.6587026f, 99.9325978f, 41.6587026f, 103.067402f, 43.0238921f, 105.465744f);
                        path.LineTo(64.5928855f, 143.034271f);
                        path.CubicTo(65.9798162f, 145.426228f, 68.6763107f, 146.994582f, 71.4311121f, 147f);
                        path.LineTo(114.568946f, 147f);
                        path.CubicTo(117.323748f, 146.994143f, 120.020241f, 145.426228f, 121.407172f, 143.034271f);
                        path.LineTo(142.976161f, 105.465744f);
                        path.CubicTo(144.34135f, 103.067402f, 144.341209f, 99.9325978f, 142.976161f, 97.5342563f);
                        path.LineTo(121.407172f, 59.965729f);
                        path.CubicTo(120.020241f, 57.5737917f, 117.323748f, 56.0054182f, 114.568946f, 56f);
                        path.LineTo(71.4311121f, 56f);
                        path.Close();

                        // draw the Xamagon path
                        surface.Canvas.DrawPath(path, paint);
                    }
                }

                var data = surface.Snapshot().Encode(SKImageEncodeFormat.Png, 100);
                myImage.Source = ImageSource.FromStream(() => data.AsStream()); //(FileImageSource)ImageSource.FromFile("navbar_notifications_light.png");

26 Kasım 2016 Cumartesi

"int, x:int, string, x:string not found in xmlns" hatası ve WidthRequest, HeightRequest

Evet eğer

"int not found in xmlns"
"x:int not found in xmlns"
"string not found in xmlns"
"x:string not found in xmlns"

hatalarından birini alıyorsanız.

string için
x:String deneyin

integer için
x:Int32 deneyin

eğer WidthRequest ve HeightRequest gibi bir property için deniyorsanız
hataya dikkatli bakın. Bu property'ler int değiller :) Double'lar :) o yüzden:
x:Double deneyin

Kolay gelsin.

25 Kasım 2016 Cuma

@integer/google_play_services_version') (APT0000) hatası

Xam.Plugin.PushNotification veya başka bir push notification alma eklentisini eklediniz. Sihirli bir şekilde APT0000 hatası alıyorsunuz. Tek yapmanız gereken Clean All çekmek. :D Başka hata çıkar o ayrı ama ilk eklemede clean çekene kadar bu hatayı veriyor.

2 Kasım 2016 Çarşamba

31 Ekim 2016 Pazartesi

iOS klavye için Kapat/Done düğmesi koymak



using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(Entry), typeof(DoneEntryRenderer))]
namespace SuperFaiz.iOS
{
public class DoneEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);

// Check for only Numeric keyboard
if (this.Element.Keyboard == Keyboard.Numeric)
{
this.AddDoneButton();
}
}

protected void AddDoneButton()
{
UIToolbar toolbar = new UIToolbar(new RectangleF(0.0f, 0.0f, 50.0f, 44.0f));

var doneButton = new UIBarButtonItem("Kapat", UIBarButtonItemStyle.Done, delegate
{
this.Control.ResignFirstResponder();
});

toolbar.Items = new UIBarButtonItem[] {
new UIBarButtonItem (UIBarButtonSystemItem.FlexibleSpace),
doneButton
};
this.Control.InputAccessoryView = toolbar;
}
}
}



Bu içeriği DoneEntryRenderer.cs dosyası oluşturup iOS projenizin ana klasörüne kaydedin.

Numeric klavyelerde Kapat düğmesi çıkmaya başlayacak :)

30 Ekim 2016 Pazar

MACOSX Xamarin'de Android projesi için APT0000 hatası (tabIndicatorColor, tabGravity, tabMode)

/users/yourUserName/.local/share dizinine gidilir.
Bu klasör altındaki herşey silinir.
Projeye Clean All çekilir.
Derleme daha uzun sürecektir.
Eğer işlem sonunda yine aynı hata alınırsa bir kez daha tüm bu işlemler tekrarlanır.
Garip ama çalışıyor...

9 Ekim 2016 Pazar

NavBar back button'ın metnini "Geri" yapmak

Göreceksiniz ki birçok yerden denemenize rağmen "Back" yazan geri düğmesinin metnini "Geri" yapamıyorsunuz. Bunun nedeni bu ifadeyi en başta RootPage içinde NavigationPage oluştururken yapmanız gerektiği.

Page page = new ContactsPage();
NavigationPage navigationPage = new NavigationPage(page);
NavigationPage.SetBackButtonTitle(page, "Geri");

Dikkat etmeniz gereken şey NavigationPage class'ının statik komutunu çağırıyoruz ve ilk parametre olarak, navigationPage instance'ımızı değil, navigation'ın page'in içine rootPage olarak verdiğimiz page'i veriyoruz. (ContactsPage instance'ı)

XAML kullanarak NavBar'a sağ button yerleştirme.

Olayı kodla yapmak için bir sürü örnek bulabilirsiniz.
Ben xaml kullanarak yapmak istiyordum.

ContentPage v.b. ilk tag'ın açışından hemen sonra.

<ContentPage.ToolbarItems>
        <ToolbarItem Icon="navbar_notifications_light.png" Name="Create" Clicked="OnButtonNotificationsClicked"></ToolbarItem>
</ContentPage.ToolbarItems>

codebehind'da da "OnButtonNotificationsClicked" adında aşağıdaki gibi bir event handler hazırlarsanız düğmeye tıklanınca kolayca tetiklenir.

private void OnButtonNotificationsClicked(object sender, System.EventArgs e)
{
       // kod...
}

Ne kodla düğme ekleme var ne event bağlama. Tertemiz mis gibi.


iOS StatusBar rengini beyaza çevirmek

iOS projesine gidilir.
info.plist dosyasına sağ tuş > XCode açılır.
En alttaki satırın üzerine gelince çıkan artı düğmesine tıklanır.
"Status Bar Style" eklenir ve değeri "Gray Style (Default)" yapılır.
En alttaki satırın üzerine gelince çıkan artı düğmesine tekrar tıklanır.
"View controller-based status bar bla bla" seçilir ve değeri "NO" yapılır.
Budur...

24 Eylül 2016 Cumartesi

XAML içinde Label'a yeni satır verdirme

Tırmalayın uğraşın ama olmayacak. Bulabildiğim tek yol karakteri unicode olarak vermek. Kodla veriliyor ok onu biliyorum ama xaml varken ne gerek var kod kalabalığına.

<Label Text="Satır1&#x0a;Satır2"></Label>

budur, basit ve kolay...