Gus*_*Gus 6 android android-layout android-constraintlayout
在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>
Run Code Online (Sandbox Code Playgroud)
我AppCompatImageView
在项目中使用,但是我很确定常规ImageView
将以相同的方式工作。
也可以通过RelativeLayout
向加上a layout_alignBaseline="@id/textView"
来实现相同的行为ImageView
。
如果由于某种原因(例如,您具有自定义视图或某些内容)而无法正常工作,则也可以考虑在运行时执行此操作。
中有一种方法TextView
称为getLastBaselineToBottomHeight
。它返回最后一个文本基线与其底部之间的距离TextView
。您可以将该值应用于您View
的最低保证金,这将给您带来相同的效果。尽管该方法仅在Android P中引入,但您可以简单地以相同方式(根据源代码)实现它。只是一个对我有用的例子:
MarginLayoutParams params = (MarginLayoutParams) rootView.findViewById(R.id.imageView).getLayoutParams();
params.bottomMargin = textView.getPaddingBottom() + textView.getPaint().getFontMetricsInt().descent;
Run Code Online (Sandbox Code Playgroud)
希望对您有所帮助。祝好运!
基线只能约束其他基线
和
基线对齐
将一个视图的文本基线与另一个视图的文本基线对齐。
由此以及我自己的实验来看,似乎不可能将泛型的View
底部或顶部限制为 aTextView
的基线。
归档时间: |
|
查看次数: |
1906 次 |
最近记录: |