跨多个分辨率的ListView缩放

时间:2018-11-06 04:13:04

标签: android listview android-constraintlayout

Pixel 2 XL vs Nexus 5x

我正在尝试在多种分辨率上缩放自定义ListView,但是我遇到了这个问题:Pixel 2 XL(这是1440p的设备)上有多余的空白,但是在Nexus 5X上看起来还不错是1080p的设备。

附加的是我同时用于Fragment和ListView的XML代码。我在片段上使用ConstraintLayout,在ListView上使用RelativeLayout。我曾尝试将ConstraintLayout用于ListView,但在将第二个文本视图锚定到右侧时遇到问题。

ListView XML

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

片段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>

3 个答案:

答案 0 :(得分:0)

设置

    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"

答案 1 :(得分:0)

进行以下更改

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="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>

答案 2 :(得分:0)

约束布局不支持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更好。