14

पर एन्चोर नहीं किया जा सकता है यह मेरा ऐप नहीं है, यह नॉर्डिक ऐप है जो इसके स्रोत को जिथब पर रखता है और मैं अपनी मशीन पर दक्षिण चलाने की कोशिश कर रहा हूं। लेकिन मैं इस त्रुटि हो रही रखना:देखें पैरेंट कोऑर्डिनेटर Layout

03-07 07:12:13.641 12622-12622/com.noxel.apppaneladmintry2 E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.noxel.apppaneladmintry2, PID: 12622 
java.lang.IllegalStateException: View can not be anchored to the the parent CoordinatorLayout 
     at android.support.design.widget.CoordinatorLayout$LayoutParams.resolveAnchorView(CoordinatorLayout.java:2522) 
     at android.support.design.widget.CoordinatorLayout$LayoutParams.findAnchorView(CoordinatorLayout.java:2491) 
     at android.support.design.widget.CoordinatorLayout.prepareChildren(CoordinatorLayout.java:619) 
     at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:670) 
     at android.view.View.measure(View.java:17442) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
     at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) 
     at android.view.View.measure(View.java:17442) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
     at android.view.View.measure(View.java:17442) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
     at android.view.View.measure(View.java:17442) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
     at android.view.View.measure(View.java:17442) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560) 
     at android.view.View.measure(View.java:17442) 
     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001) 
     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372) 
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054) 
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779) 
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 
     at android.view.Choreographer.doCallbacks(Choreographer.java:580) 
     at android.view.Choreographer.doFrame(Choreographer.java:550) 
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5257) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:921) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:716) 

एक यह मेरा MainActivity के लेआउट है:

<?xml version="1.0" encoding="utf-8"?> 

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     style="@style/HeaderBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?actionBarSize" 
      android:theme="@style/ActionBarThemeOverlay" 
      app:popupTheme="@style/ActionBarPopupThemeOverlay" 
      app:titleTextAppearance="@style/ActionBar.TitleText"/> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/sliding_tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabSelectedTextColor="@color/tabSelectedTextColor" 
      app:tabTextColor="@color/tabTextColor" 
      app:tabIndicatorColor="@color/tabIndicatorColor" 
      app:tabGravity="fill" 
      app:tabMode="fixed"/> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/view_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab_add" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@drawable/fab_ic_add" 
     app:backgroundTint="@color/fab_normal" 
     app:layout_anchor="@+id/container" 
     app:layout_anchorGravity="bottom|right|end" 
     app:elevation="4dp"/> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/background_title" 
     android:layout_gravity="bottom|center" 
     android:layout_marginBottom="6dp"/> 

</android.support.design.widget.CoordinatorLayout> 

और यह मेरा Spash स्क्रीन कोड है:

public class SplashscreenActivity extends Activity { 
    /** Splash screen duration time in milliseconds */ 
    private static final int DELAY = 1000; 
    @Override 
    protected void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splashscreen); 

     // Jump to MainActivity after DELAY milliseconds 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       final Intent intent = new Intent(SplashscreenActivity.this, MainActivity.class); 
       intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
       intent.putExtra(MainActivity.OPENED_FROM_LAUNCHER, true); 
       startActivity(intent); 
       finish(); 
      } 
     }, DELAY); 
    } 

    @Override 
    public void onBackPressed() { 
     // do nothing. Protect from exiting the application when splash screen is shown 
    } 

} 

और इस के लेआउट है मेरी स्प्लैश स्क्रीन:

<merge xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".SplashscreenActivity" > 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_marginBottom="70dp" 
    android:scaleType="center" 
    android:src="@drawable/nordic_logo" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/background_title" 
    android:layout_gravity="bottom|center" 
    android:layout_marginBottom="6dp"/> 

क्या कोई मुझे बता सकता है कि इस मुद्दे को कैसे हल किया जाए?

उत्तर

31

यह समर्थन डिजाइन पुस्तकालय v.23.2.0

compile 'com.android.support:design:23.2.0' 

मैं जानता हूँ कि इस v23.2.0 क्योंकि मेरे एप्लिकेशन से पहले ठीक काम कर रहा था (v.23.1.2) के साथ शुरू कर दिया और पेश करने के लिए शुरू कर दिया में हुआ शुरू कर दिया अद्यतन के बाद एक ही विफलता।

त्रुटि सरल है:

एक अपने विचारों का अपनी मूल समन्वयक लेआउट के लिए लंगर डाले है। हालांकि, v.23.2.0 से शुरू होने पर, अब इसकी अनुमति नहीं है।

मुझे लगता है कि त्रुटि अपने फैब में है:

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab_add" 
    ... 
    app:layout_anchor="@+id/container" 
    ... /> 

मुझे विश्वास है कि id/container एक माता पिता CoordinatorLayout

सही तरीका फिक्सिंग है layout_anchor बदल सकते हैं और के रूप में एक और दृश्य का उपयोग एंकर (पैरेंट लेआउट या कोई अन्य दृश्य जो स्क्रीन के नीचे तय किया गया है)।

+0

धन्यवाद।समस्या सुलझ गयी। – farzaneh

1

परिवर्तन एप्लिकेशन: layout_anchor, Coodinator

4

को देखने के लिए जो फैब CoordinatorLayout का वंशज दृश्य होना चाहिए लंगर डाले है का उपयोग नहीं।

और यदि दृश्य एक लेआउट है, तो एफएबी लेआउट के अंदर नहीं होना चाहिए, अन्यथा एंकर गुरुत्वाकर्षण सेटिंग्स काम नहीं करेगी। उदाहरण के लिए:

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/content_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    . 
    . 
    . 
    <FrameLayout 
     android:id="@+id/attachment_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="@dimen/fab_margin_end" 
     android:layout_marginTop="@dimen/fab_margin_top" 
     android:scaleType="center" 
     android:src="@drawable/ic_action_save" 
     app:borderWidth="0dp" 
     app:elevation="@dimen/fab_elevation" 
     app:layout_anchor="@id/attachment_layout" 
     app:layout_anchorGravity="top|end" 
     app:rippleColor="@color/accent_highlight" /> 

</android.support.design.widget.CoordinatorLayout> 
+0

उत्तर दिया गया कोड प्रदान करके उत्तर दिया जा सकता है जो बताता है कि उत्तर कैसे प्राप्त किया जाता है। – MikeT

+0

यह 'attachment_layout' नामक एक बाल लेआउट को 'fab'' के समान स्तर के साथ जोड़ता है, इसलिए 'fab'' attachment_layout' का layout_anchor कर सकता है – yanzi1225627

1

स्टूडियो में डिज़ाइन टैब का उपयोग करके आज मैंने अपने दोस्त को एक और तरीका सीखा। मैं अपने फैब घसीटा लंगर और इस कोड को पता लगाने के लिए -

<android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_margin="@dimen/activity_horizontal_margin" 
     android:src="@drawable/ic_add" 
     android:layout_gravity="center_vertical|center_horizontal" 
     app:layout_anchor="@+id/appBar" 
     app:layout_anchorGravity="bottom|right" /> 

ध्यान दें कि यह पूरी तरह से काम कर रहा है के रूप में मैं गिर टूलबार का उपयोग कर रहा हूँ। मैंने अलग चौड़ाई और इसके अच्छे काम को स्थापित करने की भी कोशिश की है।

यह भी समर्थन पुस्तकालय के किसी भी संस्करण में काम कर रहा है। मेरा 25.0.0

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