gpt4 book ai didi

android - ScrollView 不使用 ConstraintLayout 和指南滚动

转载 作者:行者123 更新时间:2023-11-30 00:19:17 30 4
gpt4 key购买 nike

我必须制作一个图像在上面、文本在上面的布局。图片高度必须是根布局高度的 40%。文本具有可变高度。因此,整个事情必须放在 ScrollView 中。

这是我的代码:

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


<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:fillViewport="true"
>

<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>

<android.support.constraint.Guideline
android:id="@+id/guideline"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintGuide_percent="0.4"/>

<ImageView
android:id="@+id/tutorial_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@+id/guideline"
tools:src="@drawable/splash_bg"
/>

<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:padding="32dp"
app:layout_constraintTop_toBottomOf="@id/guideline"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
>

<TextView
android:id="@+id/tutorial_title"
style="@style/Tutorial.Title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Alle Neuerungen der App auf einen Blick"
/>

<TextView
android:id="@+id/tutorial_description"
style="@style/Tutorial.Description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet. no sea takimata sanctus est Lorem ipsum dolor sit amet."
/>

</LinearLayout>

</android.support.constraint.ConstraintLayout>

</ScrollView>
</android.support.constraint.ConstraintLayout>

布局就像它所需要的那样,但是一旦我放入 Guideline,ScrollView 就不再滚动了。

我犯了什么错误,我怎样才能实现所需的布局和行为?

最佳答案

指南和 ImageView 必须具有与父级相同的 ConstraintLayout。将指南移动到 ImageView 上方,您应该设置好了。

附带说明一下,您可能不需要最外层的 ConstraintLayout。您也可以去掉嵌套的 LinearLayout 以获得更扁平的布局。


您设置的指南基于百分比。不幸的是,这个百分比似乎是 View 总可滚动高度的一小部分,而不仅仅是您在屏幕上看到的高度。

您希望图像占据 ScrollView 可见部分的 40%。我建议您将 XML 中的准则设置为固定大小(例如 app:layout_constraintGuide_begin="100dp")并更改代码中的准则位置,执行如下操作:

protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scrollable);
final ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.layout);

layout.post(new Runnable() {
@Override
public void run() {
final ScrollView scrollView = (ScrollView) layout.findViewById(R.id.scrollView);
final Guideline guideline = (Guideline) findViewById(R.id.guideline);
final ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) guideline.getLayoutParams();
lp.guideBegin = (int) ((scrollView.getHeight()) * 0.4);
guideline.setLayoutParams(lp);
}
});
}

我建议使用 ConstraintSet#setGuidelineBegin,但我无法让它发挥作用。你可能会有更好的运气。

关于android - ScrollView 不使用 ConstraintLayout 和指南滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46608549/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com