gpt4 book ai didi

android - 将 View 底部与文本基线对齐

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:46:02 28 4
gpt4 key购买 nike

在 ConstraintLayout 中,有没有办法将 View(例如 ImageView)的底部与 TextView 的基线对齐?我希望有一个像 app:layout_constraintBottom_toBaselineOf 这样的约束,但不存在这样的约束。

注意:我试过 app:layout_constraintBaseline_toBaselineOf,但看起来只有在 TextView 上定义时才有效。

最佳答案

这可能为时已晚,但我希望对阅读这篇文章的人仍然有帮助。

在这个具体的例子中,如果你想将 ImageView 对齐到 TextView 的基线,ImageView 的默认对齐设置应用于“顶部”,不知道为什么。很可能你想将它应用于 ImageView 的底部,这可以通过设置 android:baselineAlignBottom="true" 属性。更多信息在这里:https://developer.android.com/reference/android/widget/ImageView.html#attr_android:baselineAlignBottom

ConstraintLayout 的完整代码如下所示:

<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<android.support.v7.widget.AppCompatImageView
android:id="@+id/imageView"
android:layout_width="96dp"
android:layout_height="96dp"
android:baselineAlignBottom="true"
app:layout_constraintBaseline_toBaselineOf="@id/textView"
app:layout_constraintStart_toEndOf="@id/textView"
app:srcCompat="@drawable/drawable1"
android:contentDescription="@null"/>
</android.support.constraint.ConstraintLayout>

我在我的项目中使用了 AppCompatImageView,但我很确定常规 ImageView 的工作方式相同。

RelativeLayout 也可以通过向 ImageView 添加 layout_alignBaseline="@id/textView" 来实现相同的行为。

如果由于某种原因这不起作用,例如您有自定义 View 或其他东西,您也可以考虑在运行时进行。

TextView 中有一个方法,叫做 getLastBaselineToBottomHeight。它返回最后一个文本基线与此 TextView 底部之间的距离。您可以将该值应用于您的 View 的底部边距,这应该会产生相同的效果。虽然该方法仅在 Android P 中引入,但您可以按照相同的方式简单地实现它(根据源代码)。只是一个对我有用的例子:

MarginLayoutParams params = (MarginLayoutParams) rootView.findViewById(R.id.imageView).getLayoutParams();
params.bottomMargin = textView.getPaddingBottom() + textView.getPaint().getFontMetricsInt().descent;

希望对您有所帮助。祝你好运!

关于android - 将 View 底部与文本基线对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46260589/

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