2012-02-07 18 views
31

के आस-पास पैडिंग कैसे जोड़ें मेरी लेआउट फ़ाइल वेबव्यू को परिभाषित करती है, जिसके नीचे कुछ निश्चित ऊंचाई बटन हैं।वेबव्यू

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fadingEdge="none"> 

    <WebView 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1.0"/> 

    <LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="60dp" 
    android:padding="8dp"> 

    <Button 
     android:text="Decline" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1.0"> 
    </Button> 

    <Button 
     android:text="Accept" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1.0"> 
    </Button> 

    </LinearLayout> 
</LinearLayout> 

मैं WebView के आसपास गद्दी को जोड़ने के लिए, इस समय के रूप में पाठ सही यूआई के किनारे तक चलाता है कोशिश कर रहा हूँ।

मैंने वेबव्यू में android:padding="8dp" जोड़ने का प्रयास किया, लेकिन कोई पैडिंग जोड़ा नहीं गया था। मैंने पैडिंग लेफ्ट और पैडिंग भी कोशिश की, लेकिन वे भी काम नहीं कर पाए।

WebView एपीआई दस्तावेज़ यह देखने से पुष्टि करते हैं कि android:padding विशेषता का समर्थन करता है, इसलिए मुझे आश्चर्य है कि यह काम नहीं करता है।

क्या किसी को पता है कि यह एक ज्ञात मुद्दा है, या मेरे लेआउट एक्सएमएल की कुछ बातचीत जो मुझे समझ में नहीं आ रही है? गद्दी का उपयोग करते हुए यहां वैकल्पिक हल नहीं है

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1.0" 
    android:padding="8dp"> 

    <WebView 
     android:id="@+id/webview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"/> 

    </LinearLayout> 
+0

पैडिंग के बजाय मार्जिन आज़माएं- मुझे लगता है कि आप यही चाहते हैं। पैडिंग वास्तव में वेबव्यू इमो – AJcodez

+0

के लिए समझ में नहीं आता है, हालांकि, मैंने अपने मूल एक्सएमएल में वेबव्यू पर layout_marginRight और layout_marginLeft को सेट करने का प्रयास किया है, और इसके परिणामस्वरूप नीचे दिखाए गए बटन नहीं हैं। मुझे आश्चर्य है कि कुछ बुनियादी बात यह है कि मेरा लेआउट क्यों गलत है? –

+0

ऐसा लगता है कि आपके लेआउट_वेट को गलत तरीके से सेट किया गया है। यदि वे wrap_content हैं तो बटन लेआउट_वेट क्यों दें? – AJcodez

उत्तर

32

वेब व्यू में पैडिंग कार्यान्वयन में एक बग है। वेबव्यू पर पैडिंग सेट करने से वास्तविक वेब पेज पैड नहीं होगा, लेकिन स्क्रॉलबार को पैड करेगा। यह अपेक्षाकृत आंशिक रूप से काम कर रहा है। आपका समाधान वेबव्यू के लिए 'पैडिंग' प्राप्त करने का सबसे अच्छा तरीका है।

+1

क्या आपको पता है कि WebView के लिए layout_marginRight और layout_marginLeft को सेट करना चाहिए या नहीं? –

+0

हाँ, यह काम करना चाहिए। – zrgiu

+0

क्या यह अभी भी एक मामला है? या यह तय किया गया है और अब पैडिंग जोड़ने का कोई तरीका है? (सीएसएस/जावास्क्रिप्ट समाधान के बिना)। – wtk

-1

:

FYI करें, मेरे वैकल्पिक हल WebView चारों ओर एक अतिरिक्त LinearLayout डाल दिया, और उस के बजाय करने के लिए गद्दी जोड़ने के लिए किया गया था। उस उद्देश्य के लिए लेआउट के लिए पैडिंग है।

तो आपका 'कामकाज' वह है जो आपको करना चाहिए था।

+0

क्या आप एंड्रॉइड कह रहे हैं: पैडिंग मान वेबव्यू पर सेट नहीं किया जा सकता है? –

+0

यदि आप TextView.java के स्रोत कोड को देखते हैं, तो यह ऑनड() में पैडिंग को मानता है। लेकिन WebView.java नहीं करता है। वह समझाएगा क्यों। – JonA

2

बस इस सीएसएस जोड़ने का प्रयास:

<body style='margin:X;padding:X;'> 
+2

मुझे नहीं लगता कि यह उत्तर प्रश्न के लिए प्रासंगिक है। जबकि मैं समझता हूं कि यह वास्तव में काम कर सकता है, सवाल एंड्रॉइड लेआउटिंग मुद्दे के बारे में है और 'वेब व्यू' में प्रदर्शित एचटीएमएल सामग्री के बारे में नहीं है। –

+0

समाधान के लिए धन्यवाद। वेब दृश्य में पैडिंग जोड़ने का यह एक बेहतर तरीका है क्योंकि पारंपरिक व्यक्ति सामग्री पर काम नहीं करता है। –

17

इस समस्या के लिए एक और वैकल्पिक हल जावास्क्रिप्ट के उपयोग में हो सकता है। इसलिए जब अपने वेबपेज भरी हुई है आप इस तरह js paddings स्थापित करने के लिए फोन कर सकते हैं:

webView.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     webView.loadUrl("javascript:document.body.style.margin=\"8%\"; void 0"); 
    } 
}); 
+3

यह मेरे लिए एक अच्छा समाधान है, बहुत बहुत धन्यवाद! – Booger

+0

प्लस वन "शून्य 0" के लिए। इसके बिना जावास्क्रिप्ट नहीं चला है। –

1

गद्दी के साथ एक LinearLayout adround यह जोड़ें।

+0

उत्तर कोड पोस्ट करना चाहिए यह एक टिप्पणी है –

2

वैकल्पिक दृष्टिकोण एक scrollview

के अंदर WebView स्थापित करने के लिए तो फिर तुम WebView के लिए छोड़ दिया/सही मार्जिन जोड़ सकते हैं होगा और यह गद्दी प्रभाव मिल जाएगा। हालांकि स्क्रोलिंग को स्क्रॉलव्यू द्वारा संभाला जाएगा।

<ScrollView style="@style/MatchMatch"> 

    <WebView 
     android:id="@+id/my_web_view" 
     android:layout_marginLeft="@dimen/webViewMargin" 
     android:layout_marginRight="@dimen/webViewMargin" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
</ScrollView> 

इससे स्क्रॉलबार वेबव्यू के बाहर रखा जाएगा जो कि मैं अपने ऐप के लिए चाहता था।

+1

स्क्रॉलव्यू क्यों? एक साधारण फ्रेमलाउट बस काम करेगा और आपको संभावित नेस्टेड स्क्रॉलिंग मुद्दों की परवाह नहीं करनी होगी। –

+1

मैंने स्क्रॉलव्यू चुना क्योंकि मैं चाहता था कि स्क्रॉलबार स्क्रॉलव्यू के किनारे के खिलाफ हो। यदि मैं फ़्रेमलेआउट का उपयोग करना चाहता था तो स्क्रॉलबार आंतरिक वेबदृश्य के विरुद्ध होगा। – Voski

+0

यह वही दृश्य प्रभाव बनाने का सबसे अच्छा तरीका है। मार्जिन दृष्टिकोण स्क्रॉलिंग व्यवहार में परिणाम देता है जो सिर्फ गलत दिखता है। हालांकि इन दिनों एक बेहतर दृष्टिकोण 'NestedScrollView' का उपयोग करने के लिए हो सकता है। –