2017-10-16 134 views
0

我想在ConstraintLayout之外定位視圖以使用滑動動畫爲其設置動畫效果。我已經嘗試設置像constraintBottom_toTopOf="parent"這樣的限制,但View停留在容器內。ConstraintLayout之外的位置視圖

請注意,我想通過約束來實現這一點,以使用內置動畫,而不是使用代碼內動畫。

任何想法我可以做到這一點?

我使用compile 'com.android.support.constraint:constraint-layout:1.1.0-beta1' 與Android Studio的3.0測試版7

這是應該把視圖的容器外的簡單的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:background="@color/colorAccent"> 

    <View 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@color/colorPrimary" 
     app:layout_constraintBottom_toTopOf="parent"/> 


</android.support.constraint.ConstraintLayout> 

不過這是結果
enter image description here

+0

我從來沒有嘗試過,但約varing從0到1的偏見是什麼? – Juan

+0

請分享您的xml –

+0

發佈您正在使用哪個版本的'ConstraintLayout'。確保你沒有定義額外的約束,將視圖拉回佈局。另外,查看XML會很有幫助。 – Cheticamp

回答

2

這似乎是一個問題ConstraintLayout 1.1.0-beta1;它在ConstraintLayout 1.1.0-beta3中按預期工作。

更新至ConstraintLayout 1.1.0-beta3。我還會注意到,您需要通過執行以下操作來水平約束您的視圖。

<View 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:background="@color/colorPrimary" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintBottom_toTopOf="parent" /> 

請注意,在ConstraintLayout中不接受負邊界。請參閱this有關負餘量的堆棧溢出問題和ConstraintLayout

+0

我接受了這個答案,因爲它解決了這個問題,但是知道它帶回了一個老問題,其中'ConstraintLayout'被搞亂了nestedScrollView –

+0

@DavidSeroussi我很抱歉聽到另一個問題已經出現。您可以發佈一個問題來解決導致問題的XML的嵌套滾動視圖問題。 – Cheticamp

0

在每個視圖中,您都可以使用負邊距,這會將視圖置於父視圖之外,然後設置裁切參數。

android:clipChildren="false" 
android:clipToPadding="false" 

這將使視圖不剪輯。

0

我有另一種方式來解決這個問題:

1.增加一個錨(anchor_leftlayout_constraintStart_toStartOf="parent"

2.增加YourViewlayout_constraintEnd_toStartOf="@+id/anchor_left"

這就是它!

代碼:

<android.support.constraint.ConstraintLayout> 
    <View 
     android:id="@+id/anchor_left" 
     app:layout_constraintStart_toStartOf="parent"/> 

    <YourView 
     android:id="@+id/ll_left" 
     app:layout_constraintEnd_toStartOf="@+id/anchor_left"/> 
</android.support.constraint.ConstraintLayout>