我有一个工具栏视图布局,其中左侧有一个ImageView,中央有TextView,右侧为零,一个或两个ImageView。而且我需要将TextView的文本居中在窗口的中心,而不是在左右图标之间的空间中心。
这是我的布局代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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="?attr/actionBarSize"
tools:background="@color/darkGreyTextColor">
<ImageView
android:id="@+id/leftIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_hamburger" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/rightBarrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="left"
app:constraint_referenced_ids="rightFirstIcon,rightSecondIcon" />
<ImageView
android:id="@+id/rightFirstIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintBottom_toBottomOf="@+id/rightSecondIcon"
app:layout_constraintEnd_toStartOf="@+id/rightSecondIcon"
app:layout_constraintTop_toTopOf="@+id/rightSecondIcon"
tools:srcCompat="@drawable/ic_locate"
tools:visibility="visible" />
<ImageView
android:id="@+id/rightSecondIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@drawable/ic_search"
tools:visibility="visible" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:maxLines="1"
android:text="@{viewModel.navigationStatus.topNavigationTitle}"
android:textColor="@color/white"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/rightBarrier"
app:layout_constraintStart_toEndOf="@+id/leftIcon"
app:layout_constraintTop_toTopOf="parent"
tools:text="Test small text"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
我需要做什么以始终将TextView中的文本居中放置在窗口的中心位置?
答案 0 :(得分:0)
一个选项可以是,使用全角的编辑文本创建布局。然后在另一个布局中添加Imageview及其方向。最后,将第二个布局放在第一个布局的顶部。
答案 1 :(得分:0)
对话UI,现在实现的是最好的,但是如果您坚持在所有情况下都将其设置为父级,这很简单,只需使布局依赖项引用父级即可:
add_action('admin_enqueue_scripts', 'add_admin_scripts');
function add_admin_scripts() {
$src = plugin_dir_url( __FILE__ ) . '/js/admin-scripts.js';
wp_enqueue_script( 'integration-scripts', $src, array( 'jquery' ) );
}
答案 2 :(得分:0)
我有相同的任务。
如果需要的话,我需要放置3个项目(左,中,右)和ellipsize中心TextView。
左右项目可以被隐藏或具有动态宽度
示例:
。
我选择具有重力属性的FrameLayout作为项目:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_back"
style="@style/AppTheme.Clickable"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_gravity="center_vertical|start"
android:padding="16dp"
app:srcCompat="@drawable/ic_back" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical|center_horizontal"
android:ellipsize="end"
android:fontFamily="@font/sf_pro_display_semibold"
android:gravity="center"
android:padding="16dp"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="17sp"
tools:text="Filter team" />
<TextView
android:id="@+id/tv_action"
style="@style/AppTheme.Clickable"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical|end"
android:fontFamily="@font/sf_pro_display_regular"
android:padding="16dp"
android:singleLine="true"
android:textColor="@color/colorAccent"
android:textSize="17sp"
tools:text="Apply" />
</FrameLayout>
更新项目内容后,我致电 resizeTitle :
private fun getVisibleWidth(view: View): Int {
return if (view.visibility == View.VISIBLE) {
view.measuredWidth
} else {
0
}
}
private fun resizeTitle() {
binding.root.post {
val leftWidth = getVisibleWidth(binding.ivBack)
val rightWidth = getVisibleWidth(binding.tvAction)
val totalWidth = getVisibleWidth(binding.root)
binding.tvTitle.updateLayoutParams {
width = max(totalWidth - max(leftWidth, rightWidth) * 2, 0)
}
}
}