2015-04-21 10 views
8

मैं नए फेसबुक Android SDK 4. का उपयोग कर पुराने SDK संस्करण के साथ द्वारा एक अजीब समस्या का सामना कर रहा हूँ मैं उपयोग कर रहा था:फेसबुक लॉग इन बटन: लागू कस्टम शैली

<com.facebook.login.widget.LoginButton 
    xmlns:fb="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/fb_button" 
    style="@style/FacebookLoginButton" 
    android:layout_width="485dp" 
    android:layout_height="64dp" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="-17dp" 
    fb:login_text="@string/login_with_facebook" 
    fb:logout_text="Logout" /> 
style.xml की

FacebookLoginButton अनुभाग

तरह लग रहा है
<style name="FacebookLoginButton"> 
    <item name="android:background">@drawable/button_facebook</item> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:textSize">21sp</item> 
    <item name="android:gravity">center</item> 
</style> 

ड्रायबल/बटन_फेसबुक में कस्टम बटन आकार का पीएनजी शामिल है। अब एसडीके सदाबहार का पुराना पुराना संस्करण अच्छी तरह से काम करता है, लेकिन नए एसडीके के साथ कुछ गलत हो गया। मैं इस प्राप्त:

enter image description here

के रूप में आप देख सकते हैं, वहाँ दो फेसबुक आइकन: परिक्रमा एक फेसबुक बटन का है, दूसरा एक (बड़ा) drawable button_facebook के अंतर्गत आता है)। घुमावदार आइकन छुपाने का एक तरीका है?

+0

खुद बटन और सेट पृष्ठभूमि छवि बनाने के पाने के लिए onCreate विधि में निम्न कोड डालें .. और फिर पर फेसबुक फोन बटन पर क्लिक करें .. – Destro

उत्तर

14

यहां तक ​​कि मैं एक ही मुद्दे का सामना करना पड़ा जब मैं अमेरिकन प्लान प्रवेश के साथ काम कर रहा था .... मैं

fbLoginButton.setBackgroundResource(R.drawable.facebook); 
    fbLoginButton.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); 
    fbLoginButton.setCompoundDrawablePadding(0); 
    fbLoginButton.setPadding(0, 0, 0, 0); 
    fbLoginButton.setText(""); 

निम्नलिखित कोड जोड़कर समस्या का समाधान हो .... और यहाँ मेरी XML लेआउट है:

<com.facebook.widget.LoginButton 
      xmlns:fb="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/fbLoginButton" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      fb:login_text="" 
      fb:logout_text="" 
      android:scaleType="centerInside" /> 

उम्मीद है कि यह आपकी मदद करता है।

संपादित करें 1:
फेसबुक LoginButton वर्ग के स्थान जो अपने एसडीके के अंदर मौजूद है बदल सकता है तो यू एक्सएमएल टैग तदनुसार बदलने की जरूरत हो सकती है। मेरे मामले में यह com.facebook.widget.LoginButton के अंदर था इसे दोबारा जांचें।

+0

लेकिन आप उपयोग कर रहे हैं com.facebook.widget.LoginButton, मैं com.facebook.login.widget.LoginButton – giozh

+0

का उपयोग कर रहा हूं इससे कोई फर्क नहीं पड़ता .... यह फेसबुक एसडीके के अंदर क्लास लॉगबटन के स्थान को इंगित करता है .... मैंने शायद इस्तेमाल किया हो एफबी का एक पुराना संस्करण ... जावा कोड जोड़ना आपकी समस्या का समाधान करेगा ... मैं इस पर 100% निश्चित हूं –

+1

ठीक है धन्यवाद। तुम मेरा दिन बचाओ! – giozh

4

तुम बस android:drawableLeft="@null" उपयोग कर सकते हैं छोटे Facebook आइकन

+0

फेसबुक क्यों नहीं बदल रहा है एंड्रॉइड: ड्रॉ करने योग्य लेफ्ट एंड्रॉइड: drawableSTART = "@ null"। एंड्रॉइड: DrawableLeft को बहिष्कृत किया गया है ... – SmilingM

19

नवीनतम फेसबुक v4 एपीआई में यह सही जवाब है से छुटकारा पाने के:

<com.facebook.login.widget.LoginButton 
    xmlns:facebook="http://schemas.android.com/apk/res-auto" 
    facebook:com_facebook_login_text="LOGIN" 
    facebook:com_facebook_logout_text="LOGOUT"/> 
+1

@Mythul ... धन्यवाद ... लेकिन इसके लिए आपको दस्तावेज़ कहां मिला? –

+0

अगर मुझे सही याद है तो यह कहीं भी उनके आधिकारिक दस्तावेज में छिपा हुआ था। मैंने ईमानदार होने के लिए 1-2 दिन बिताए। – Mythul

+0

@ मिथुल ... क्या आपके पास अभी भी लिंक है? अग्रिम में धन्यवाद –

0
<FrameLayout 
    android:id="@+id/facebook_lay" 
    android:layout_width="0dp" 
    android:layout_height="40dp" 
    android:layout_weight="1" 
    android:background="@drawable/facebook_button_bg"> 

    <com.lovetohave.love.ui.LoveTextView 
     android:id="@+id/facebook_txt" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="?attr/selectableItemBackgroundBorderless" 
     android:clickable="true" 
     android:gravity="center" 
     android:text="@string/facebook" 
     android:textColor="@color/white" 
     android:textSize="@dimen/material_small" 
     app:customFont="fonts/Roboto-Medium.ttf" /> 

    <com.rey.material.widget.ProgressView 
     android:id="@+id/fb_progress_view_cir" 
     android:layout_width="20dp" 
     android:layout_height="20dp" 
     android:layout_gravity="center" 
     android:visibility="gone" 
     app:cpd_strokeColor="#fff" 
     app:cpd_strokeSize="1dp" 
     app:pv_autostart="true" 
     app:pv_circular="true" 
     app:pv_progressMode="indeterminate" 
     app:pv_progressStyle="@style/CircularProgress1" /> 

</FrameLayout> 

आप TextView या बटन की तरह डिज़ाइन कर सकते हैं और बटन क्लिक घटना के अंदर निम्नलिखित कोड जोड़ें।

LoginManager.getInstance().logOut(); 
LoginManager.getInstance().logInWithReadPermissions(SignIn.this, permissionNeeds); 

तब प्रोफ़ाइल जानकारी

LoginManager.getInstance().registerCallback(callbackManager, 
    new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      mAccessToken = loginResult.getAccessToken() 
        .getToken(); 
      PrefUtil.saveData("accesstoken", 
        mAccessToken, SignIn.this); 
      GraphRequest request = GraphRequest.newMeRequest(
        loginResult.getAccessToken(), 
        new GraphRequest.GraphJSONObjectCallback() { 

         @Override 
         public void onCompleted(org.json.JSONObject object, 
               GraphResponse response) { 


          } catch (org.json.JSONException e) { 
           // TODO Auto-generated catch block 

           e.printStackTrace(); 
          } catch (Exception e) { 
           e.printStackTrace(); 
          } 

         } 
        }); 
      Bundle parameters = new Bundle(); 
      parameters 
        .putString(
          "fields", 
          "id,name,email,gender,birthday,first_name,last_name,location,picture"); 
      request.setParameters(parameters); 
      request.executeAsync(); 
     } 

     @Override 
     public void onCancel() { 
      Log.i(TAG, "LoginManager FacebookCallback onCancel"); 
      mFbProgressBar.setVisibility(View.GONE); 
      mFacebookTxt.setVisibility(View.VISIBLE); 
      if (pendingAction != PendingAction.NONE) { 
       showAlert(); 
       pendingAction = PendingAction.NONE; 
      } 
     } 

     @Override 
     public void onError(FacebookException exception) { 
      mFbProgressBar.setVisibility(View.GONE); 
      mFacebookTxt.setVisibility(View.VISIBLE); 
      Log.i(TAG, "LoginManager FacebookCallback onError"); 
      if (pendingAction != PendingAction.NONE 
        && exception instanceof FacebookAuthorizationException) { 
       showAlert(); 
       pendingAction = PendingAction.NONE; 
      } 
     } 

     private void showAlert() { 
      new AlertDialog.Builder(SignIn.this) 
        .setTitle(R.string.cancelled) 
        .setMessage(R.string.permission_not_granted) 
        .setPositiveButton(R.string.ok, null).show(); 
     } 
    }); 
संबंधित मुद्दे