मुझे फॉर्म के वर्तमान संस्करण में एक साल पुराने ऐप को अपडेट करना था। दुर्भाग्य से एंड्रॉइड पर, ऐसा लगता है कि स्क्रीन लंबी है तो यह वास्तव में है (स्क्रीन शॉट देखें)। आईओएस के लिए सब कुछ ठीक काम कर रहा है, लेकिन मेरे सभी पेज कई डिवाइसों पर एंड्रॉइड पर स्क्रीन से थोड़े लम्बे हैं।

enter image description here

कुछ चीजें जो मैंने कोशिश की हैं:

  • सुनिश्चित करें कि मैं नवीनतम एसडीके और नवीनतम एंड्रॉइड सपोर्ट फाइलों का उपयोग कर रहा हूं
  • एक पैडिंग में हैक किया गयाEv
  • मेरे सभी कस्टम रेंडरर्स को नए एंड्रॉइड कंस्ट्रक्टर्स के साथ अपडेट किया गया

लेआउट विवरण: मुहावरे पर निर्भर करता है: एक फोन पर, यह एक टैब्ड पेज के साथ एक मास्टर विवरण है, जो टैब्ड पेज के पहले चाइल्ड के लिए एक नेविगेशन पेज है (इसलिए मेनू केवल उस पेज के लिए दिखाई देता है), और बाकी के लिए सामग्री पेज। टेबलेट के लिए, टैब्ड पृष्ठों के बच्चे सभी सामग्री पृष्ठ हैं। मोडल पृष्ठ सभी सामग्री पृष्ठ हैं।

किसी भी मदद, यहां तक ​​​​कि नैदानिक ​​​​रूप से, बहुत सराहना की जाएगी।

अपडेट करें:

मेरा वर्तमान हैक एक विशेष रेंडरर में पैडिंग को समायोजित करना है जैसे:

public class HackLayoutShiftFixRenderer : MasterDetailPageRenderer
{
    public HackLayoutShiftFixRenderer(Context context) : base(context)
    {
    }

    protected override void OnElementChanged(VisualElement oldElement, VisualElement newElement)
    {
        base.OnElementChanged(oldElement, newElement);

        if (!(newElement is MasterDetailPage masterDetail)) return;

        masterDetail.Master.Padding = new Thickness(0, 0, 0, 24);
        masterDetail.Detail.Padding = new Thickness(0, 0, 0, 24);
    }
}

और मैं मोडल पेजों के साथ कुछ ऐसा ही करता हूं। परीक्षण और त्रुटि के साथ संख्या 24 का उपयोग किया गया था।

0
Sonic1015 25 मई 2018, 18:21

1 उत्तर

सबसे बढ़िया उत्तर

मुझे जवाब मिल गया, लेकिन ऐसा क्यों हुआ कि कुछ स्पष्टीकरण पर ध्यान नहीं दिया जाएगा।

एक साल पहले, इसे सूचीदृश्य पर खोज आइटम छिपाने वाले कीबोर्ड को ठीक करने के लिए लागू किया गया था: http://xamarinformscorner.blogspot.com/2016/06/soft-keyboard-hiding-entries-fields-in.html

लिंक के गायब होने की स्थिति में कोड:

public class AndroidBug5497WorkaroundForXamarinAndroid
{

    // For more information, see https://code.google.com/p/android/issues/detail?id=5497
    // To use this class, simply invoke assistActivity() on an Activity that already has its content view set.

    // CREDIT TO Joseph Johnson (http://stackoverflow.com/users/341631/joseph-johnson) for publishing the original Android solution on stackoverflow.com

    public static void assistActivity(Activity activity)
    {
        new AndroidBug5497WorkaroundForXamarinAndroid(activity);
    }

    private View mChildOfContent;
    private int usableHeightPrevious;
    private FrameLayout.LayoutParams frameLayoutParams;

    private AndroidBug5497WorkaroundForXamarinAndroid(Activity activity)
    {
        FrameLayout content = (FrameLayout)activity.FindViewById(global::Android.Resource.Id.Content);
        mChildOfContent = content.GetChildAt(0);
        ViewTreeObserver vto = mChildOfContent.ViewTreeObserver;
        vto.GlobalLayout += (object sender, EventArgs e) => {
            possiblyResizeChildOfContent();
        };
        frameLayoutParams = (FrameLayout.LayoutParams)mChildOfContent.LayoutParameters;
    }

    private void possiblyResizeChildOfContent()
    {
        int usableHeightNow = computeUsableHeight();
        if (usableHeightNow != usableHeightPrevious)
        {
            int usableHeightSansKeyboard = mChildOfContent.RootView.Height;
            int heightDifference = usableHeightSansKeyboard - usableHeightNow;

            frameLayoutParams.Height = usableHeightSansKeyboard - heightDifference;

            mChildOfContent.RequestLayout();
            usableHeightPrevious = usableHeightNow;
        }
    }

    private int computeUsableHeight()
    {
        Rect r = new Rect();
        mChildOfContent.GetWindowVisibleDisplayFrame(r);
        if (Build.VERSION.SdkInt < BuildVersionCodes.Lollipop)
        {
            return (r.Bottom - r.Top);
        }
        return r.Bottom;
    }

समस्या "computeUsableHeight" फ़ंक्शन में थी: कम से कम नवीनतम संस्करण के साथ, मुझे हमेशा ऊपर और नीचे के बीच के अंतर को ध्यान में रखना चाहिए। मुझे नहीं पता कि यह Xamarin.Forms 2.3.4 और 3.0 . के बीच क्यों और कब बदल गया

1
Sonic1015 30 मई 2018, 21:30