2016-04-12 12 views
10

का उपयोग कर ज़ैमरिन फॉर्म एंड्रॉइड प्रोजेक्ट में फ्रेम का रूपरेखा रंग प्रदर्शित नहीं होता है वर्तमान में मैं एमवीएमएमक्रॉस का उपयोग कर एक्समरिन फॉर्म एंड्रॉइड प्रोजेक्ट पर काम कर रहा हूं। मुझे फ्रेम के बारे में एक अजीब समस्या है। जब भी मैं आउटलाइन कॉलर सेट करता हूं, यह केवल आईओएस में प्रदर्शित होता है और एंड्रॉइड में नहीं। मैंने एक अलग एक्समरिन फॉर्म परियोजनाओं के साथ प्रयास किया है और यह बिना किसी समस्या के दोनों प्लेटफार्मों द्वारा प्रदर्शित किया जाता है। मेरे पास कोई संकेत नहीं है कि यह क्यों हो रहा है। किसी भी तरह से इस मुद्दे से संबंधित MvvmCross सकता है?एमवीवीएमक्रॉस

<core:BasePage 
     xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     xmlns:core="clr-namespace:Core.Base.Views;assembly=Core" 
     x:Class="Views.TestPage" 
     BackgroundImage="background_secret.png" 
     Title="Test"> 

     <ContentPage.Content> 
      <Grid 
       HorizontalOptions="FillAndExpand" 
       Padding="12,20,12,20" 
       VerticalOptions="FillAndExpand"> 
       <Frame 
        HasShadow="false" 
        VerticalOptions="Fill" 
        BackgroundColor="White" 
        OutlineColor="#1961ac"> 
        <StackLayout> 
         <Frame 
           VerticalOptions="Start" 
           Padding="8,4,8,4" 
           HasShadow="false" 
           OutlineColor="#9DB0BB"> 
           <Label Text="Test"></Label> 
          </Frame> 
        </StackLayout> 
     </Frame> 
      </Grid> 
     </ContentPage.Content> 
    </core:BasePage> 

Android page

iOS page

Xamarin फॉर्म्स संस्करण 2.1 MvvmCross संस्करण 4.1

+0

क्या आप अपने एक्सएएमएल या यूआई कोड के महत्वपूर्ण टुकड़े और आईओएस और एंड्रॉइड के एक स्क्रीनशॉट को जोड़ सकते हैं? यह मदद कर सकता है। –

+0

मेरी ओर से एक ही मुद्दा! इसके लिए कोई काम? – Suchith

उत्तर

8

मैं भी एक ही मुद्दा मिल गया, यह मेरे पास है हल करने के लिए:

यहां एक नमूना है फ़्रेम नियंत्रण के लिए कस्टम रेंडरर जोड़ा गया। framerenderer में विधि ड्रा और निजी विधि DrawOutline इस प्रकार,

public override void Draw(ACanvas canvas) 
{ 
    base.Draw(canvas); 
    DrawOutline(canvas, canvas.Width, canvas.Height, 4f);//set corner radius 
} 
void DrawOutline(ACanvas canvas, int width, int height, float cornerRadius) 
{ 
    using (var paint = new Paint { AntiAlias = true }) 
    using (var path = new Path()) 
    using (Path.Direction direction = Path.Direction.Cw) 
    using (Paint.Style style = Paint.Style.Stroke) 
    using (var rect = new RectF(0, 0, width, height)) 
    { 
     float rx = Forms.Context.ToPixels(cornerRadius); 
     float ry = Forms.Context.ToPixels(cornerRadius); 
     path.AddRoundRect(rect, rx, ry, direction); 

     paint.StrokeWidth = 2f; //set outline stroke 
     paint.SetStyle(style); 
     paint.Color = Color.ParseColor("#A7AE22");//set outline color //_frame.OutlineColor.ToAndroid(); 
     canvas.DrawPath(path, paint); 
    } 
} 

और एक और दृष्टिकोण में आप भी एक पृष्ठभूमि संसाधन के रूप में गोल कोने का एंड्रॉयड चयनकर्ता एक्सएमएल उपयोग करने पर विचार कर सकते हैं ओवरराइड करने के लिए की जरूरत है। इस ब्लॉग पर अधिक जानकारी के लिए मेरे ब्लॉग पोस्ट: http://www.appliedcodelog.com/2016/11/xamarin-form-frame-outline-color_21.html

+0

दूसरा विकल्प एक वैकल्पिक अधिकार है? आप फ्रेम से कस्टम नियंत्रण बनाते हैं। यह मेरे लिए बहुत स्पष्ट नहीं है। – batmaci

+0

फ्रेम के लिए कस्टम नियंत्रण बनाएं और गहरा सीमा के साथ पृष्ठभूमि संसाधन xml को परिभाषित करें। – Suchith

+1

ब्लॉग में उल्लिखित दूसरा विकल्प मेरे लिए काम करता है। –

संबंधित मुद्दे