我正在使用Constraint Layout。我有以下观点:
<View
android:id="@+id/view"
android:layout_width="1dp"
android:layout_height="0dp"
android:layout_marginBottom="4dp"
android:layout_marginTop="8dp"
android:background="@android:color/transparent"
app:layout_constraintBottom_toTopOf="@+id/checkbox"
app:layout_constraintEnd_toEndOf="@+id/checkbox"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@+id/checkbox"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread_inside" />
<View
android:id="@+id/line"
android:layout_width="1dp"
android:layout_height="1dp"
android:background="@android:color/black"
android:alpha="0"
android:transformPivotY="0dp"
app:layout_constraintBottom_toBottomOf="@+id/view"
app:layout_constraintEnd_toEndOf="@+id/view"
app:layout_constraintStart_toStartOf="@+id/view"
app:layout_constraintTop_toTopOf="@+id/view"
app:layout_constraintVertical_bias="0" />
视图有android:layout_height=1dp
。这相当于match_constraint
。我想以编程方式获得此视图的高度。由于我只需要在用户输入上使用此值,因此无需担心视图生命周期。
通过使用view.layoutParams.height
之类的方法,我得到0dp
,这是错误的,因为视图的高度大于(受match_constraint约束)。它可能错误地反映了xml中的值。
使用view.height
我得到了例如103
,但我认为视图的高度实际上小于此值,因为分配line.animate().scaleY(view.height.toFloat())
会使得线条的高度比视图的高度大得多
答案 0 :(得分:0)
我还没有使用Constraint Layout,但我认为它与答案无关,所以我发现了这些:
view.animate().scaleY()
的文档不是很清楚,但是从一些实验中我认为这是比例因子(因此1将不会给出任何更改,2会使视图翻倍,等等)。 view.getViewTreeObserver().addOnGlobalLayoutListener
例如:
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
view.animate().scaleY(2).setDuration(1000);
int height = view.getHeight();
...
}
});