【发布时间】:2019-11-24 22:50:20
【问题描述】:
我正在尝试将作为自定义视图的列表视图的项目居中到约束布局的中心,但它们只显示在左侧。
我尝试将约束和列表视图的水平偏差设置为 50 和 100,但列表视图仍然没有在中心或除开头以外的任何其他位置显示项目。我尝试使用layout_centerhorizontal="true",但这也不起作用。请记住,listview 在fragment 内部膨胀,而ViewPager 在内部。
更新: 我通过将 custom_item xml 包装在一个线性布局中来修复它,该布局水平填充整个屏幕并为项目添加水平中心重心。
这是我的 xml:
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/parentConstraint_tutor_fragment_loged"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="32dp"
android:layout_marginBottom="8dp"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
<ListView
android:id="@+id/tutorListView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:divider="@null"
android:dividerHeight="0dp"
android:listSelector="@android:color/transparent"
android:overScrollMode="never"
android:scrollbars="none"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
</androidx.constraintlayout.widget.ConstraintLayout>
这是 custom_Item:
<?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="323dp"
android:layout_height="68dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/tutor_entry_panel_phones_selector">
<ImageView
android:id="@+id/tutorIcon_cell"
android:layout_width="35dp"
android:layout_height="33dp"
android:layout_marginStart="12dp"
android:layout_marginLeft="12dp"
android:scaleType="fitCenter"
android:tint="@color/BlueColor"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/login_tutor_icon" />
<TextView
android:id="@+id/userLogin_nameTextV"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginLeft="4dp"
android:layout_marginEnd="22dp"
android:layout_marginRight="22dp"
android:gravity="center"
android:textColor="@color/BlueColor"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/deleteIconPhones"
app:layout_constraintStart_toEndOf="@+id/tutorIcon_cell"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/deleteIconPhones"
android:layout_width="32dp"
android:layout_height="36dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
我只需要列表视图中的自定义视图位于约束布局的中心。这是当前状态的屏幕截图:
期望的状态将是 custom_item 在中间而不是在约束布局的开头:
custom_item 快照:
包含此片段的 viewpager 的蓝图视图(我试图让 custom_item 在 viewpager 的片段内居中):
【问题讨论】:
-
你为什么给
android:layout_width="0dp" android:layout_height="0dp" -
@APP 使约束匹配其父大小,那些在父约束内。
标签: android xml android-studio listview