Pixel 2 XL vs Nexus 5x
我正试图在多个分辨率之间扩展我的自定义ListView,但我遇到了这个问题:我在Pixel 2 XL上有额外的空白空间,这是一个1440p的设备,但在Nexus 5X上看起来很好,它是一个1080p的设备。
附件是Fragment和ListView的XML代码。我在片段上使用ConstraintLayout,在ListView上使用RelativeLayout。我曾尝试为ListView使用ConstraintLayout,但在将第二个文本视图锚定到右侧时遇到了问题。
ListView XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:layout_width="68dp"
android:layout_height="wrap_content"
android:gravity="start"
android:text="TextView"
android:textSize="18sp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="310dp"
android:layout_marginTop="0dp"
android:gravity="end"
android:text="TextView"
android:textSize="18sp" />
</RelativeLayout>
片段XML
<?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:id="@+id/frameLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LeaderboardFrag">
<!-- TODO: Update blank fragment layout -->
<ListView
android:id="@+id/leaderboardListView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</android.support.constraint.ConstraintLayout>
设置
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
将始终将您的ListView放在中心位置。尝试删除
app:layout_constraintBottom_toBottomOf="parent"
进行以下更改
列表视图XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView1"
android:layout_width="68dp"
android:layout_height="wrap_content"
android:gravity="start"
android:text="TextView"
android:textSize="18sp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="310dp"
android:layout_marginTop="0dp"
android:gravity="end"
android:text="TextView"
android:textSize="18sp" />
</RelativeLayout>
片段XML
<?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:id="@+id/frameLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="your_color"
tools:context=".LeaderboardFrag">
<!-- TODO: Update blank fragment layout -->
<ListView
android:id="@+id/leaderboardListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</android.support.constraint.ConstraintLayout>
约束布局不支持match_parent
,因此您可以执行以下操作
<?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:id="@+id/frameLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LeaderboardFrag">
<!-- TODO: Update blank fragment layout -->
<ListView
android:id="@+id/leaderboardListView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</android.support.constraint.ConstraintLayout>
将值设置为0dp
将允许您的布局与所提供的约束相匹配。此外,这是您的选择,但使用RecyclerView
比使用ListView
更好。