在Android中制作响应式视图

时间:2019-05-10 09:34:08

标签: android user-interface frontend responsive

我在使用Android响应式设计时遇到了很多麻烦。在网页设计中,我们可以使用百分比作为视图大小,但是在android中,我们没有这种东西。 无论我使用ImageButtons还是常规Button或其他任何东西,当我更改“预览设备”时,孔的设计都会变得混乱,因为宽度和高度不会动态更改,例如,我使Pixel设备上的一切看起来都很好,但是当我更改预览到Pixel 2 XL的每一件事都很小。赌你不想知道当我将预览改为:D

时会发生什么

我应该提一下,我知道我不能使用硬编码的值,而且我也没有做太多事情。 我使用Adobe XD设计了按钮,并使用该工具可以导出PNG类型和六种不同大小(ldpi,mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi)的按钮。但是,即使我的ImageButton也没有动态更改其大小。 我试图找到解决方案,但我肯定必须找到一个解决方案,但是当我搜索android响应式设计或诸如此类的东西时,可能是因为我的英文不好而导致的。

我非常感谢您的帮助

下面是一些示例代码,ImageButtons的大小不会动态变化,因此在像像素这样的小型设备中,我具有滚动功能,但在像像素3 XL这样的大型设备中,按钮是如此之小,因此无需滚动。

>
<HorizontalScrollView
            android:layout_width="0dp"
            android:layout_height="wrap_content" android:layout_marginTop="32dp"
            app:layout_constraintTop_toBottomOf="@+id/button" android:layout_marginBottom="32dp"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" android:scrollbars="none"
    >
        <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent">
            <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
                         android:src="@drawable/all_foods_btn" android:background="@android:color/transparent"
                         android:layout_marginStart="@dimen/activity_horizontal_margin"
                         android:layout_marginEnd="@dimen/activity_horizontal_margin"
                         android:contentDescription="@string/main_activity_all_foods_btn_dsc"/>

            <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
                         android:src="@drawable/profile_btn_main" android:background="@android:color/transparent"
                         android:layout_marginStart="@dimen/activity_horizontal_margin"
                         android:layout_marginEnd="@dimen/activity_horizontal_margin"
                         android:contentDescription="@string/main_activity_profile_btn_dsc"/>

        <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
                     android:src="@drawable/classic_decider_btn" android:background="@android:color/transparent"
                     android:layout_marginStart="@dimen/activity_horizontal_margin"
                     android:layout_marginEnd="@dimen/activity_horizontal_margin"
                     android:contentDescription="@string/main_activity_classic_decider_btn_dsc"/>
    </LinearLayout>

    </HorizontalScrollView>

2 个答案:

答案 0 :(得分:1)

尝试将android:layout_height="0dp"更改为HorizontalScrollView。这将使其遵守您设置的约束(底部为父级,顶部为button

答案 1 :(得分:1)

try this library:此大小单位根据sp大小单位(对于文本)与屏幕大小成比例。它可以帮助Android开发人员支持多个屏幕。