草庐IT

android - 带有头像、文本和图标的列表的 Material 设计建议

coder 2023-06-06 原文

我想创建 Material Developed Android 应用程序,我尝试遵循 Google 的所有建议,专门为新的 RecylcerView 制作漂亮的布局。 RecyclerView 有头像ImageView、标题和副标题TextView 和 Action 图标ImageView

我应该在 ImageView 的 widthheight 属性中输入什么值,以便它支持不同的屏幕尺寸和密度,以及我应该从系统中选择哪些尺寸的可绘制对象图标包?

material-design-icons-1.0.1

列表建议:

??? xml 代码中是未知的东西,我不知道该放什么:

XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view_friend"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    card_view:cardCornerRadius="4dp"
    card_view:cardUseCompatPadding="true">

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">???

        <ImageView
            android:id="@+id/friend_profile_picture"
            android:layout_width="40dp"???
            android:layout_height="40dp"???
            android:layout_alignParentLeft="true"
            android:layout_margin="16dp"
            android:layout_centerVertical="true"
            android:src="@drawable/ic_person_grey600_48dp"/>???

        <TextView
            android:id="@+id/friend_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/friend_online_imageview"
            android:layout_toRightOf="@+id/friend_profile_picture"
            android:paddingTop="20dp"
            android:text="@string/plain_text_for_preview"
            android:textSize="16sp"/>

        <TextView
            android:id="@+id/friend_state"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/friend_name"
            android:layout_toLeftOf="@id/friend_online_imageview"
            android:layout_toRightOf="@+id/friend_profile_picture"
            android:paddingBottom="20dp"
            android:text="@string/plain_text_for_preview"
            android:textSize="14sp"/>

        <ImageView
            android:id="@+id/friend_online_imageview"
            android:layout_width="wrap_content"???
            android:layout_height="wrap_content"???
            android:layout_alignParentRight="true"
            android:layout_margin="16dp"
            android:layout_centerVertical="true"
            android:src="@drawable/ic_messenger_grey600_18dp"/>???

    </RelativeLayout>

</android.support.v7.widget.CardView>

预览:

最佳答案

#1 两个订单项:

布局 minHeight 为 72dp,layout_heightwrap_content。图标大小为 40dp(通常是圆形位图)。图标有 16dp 的上边距和 16dp 的左边距,没有其他的。

两个 TextView 都在一个垂直方向和垂直居中的 LinearLayout 中。此布局的左边距为 16dp,右边距为 16dp。这将允许您删除图像并且仍然具有完整的侧边距。第一行通常有 textApperance="@style/TextAppearance.AppCompat.Body2",第二行有 Body1。文本布局有 16dp 顶部和 16dp 底部 padding (它必须在此处填充,因为 RelativeLayout 的子级不尊重底部边距 - 它在其他时候很有用) .现在您可以在第二个 TextView 中放置多行,整个项目将很好地展开。

不要忘记在文本布局上设置 layout_toRightOf="@+id/icon"layout_alignWithParentIfMissing="true"。如果右侧有另一个图标(或小部件),请添加 layout_toLeftOf="@+id/right_icon"。如果不使用 layout_alignParentRight="true"。这将拉伸(stretch)布局以占用所有可用空间。或者你可以使用 LinearLayout

将其放入内容区域的列表中。该列表不必在顶部或底部有任何填充,它看起来不错。

#2 内容中的单行项目

与数字 1 相同,但有以下区别:minHeightlayout_height 设置为 56dp。不要使用任何垂直边距或填充,只需垂直居中即可。仅使用一行文本。

在顶部使用 8dp 填充或 48dp 标题,底部使用 8dp 填充的列表中使用此选项。否则它看起来会“被切断”。

#3 菜单中的单行项目

与数字 2 相同,但有以下区别:高度为 48dp。图标为 24dp。图标应具有以下属性:

android:layout_width="40dp"
android:layout_height="wrap_content"
android:scaleType="fitStart"

这将允许您将任何图标从 1dp 放置到 40dp,而不会破坏平衡(您不必更改图标和文本之间的间距,因为它与以前的情况一样保持 40dp)。

我在抽屉导航和菜单中使用它。

编辑:注意

规范说左右项目边距应该是 24dp 而不是平板电脑的 16dp (sw600dp)。您可以通过在平板电脑上添加左右项目布局填充 8dp 来解决此问题(使用动态值)。

规范还说项目之间的分隔符(如果存在)应该是项目的一部分。您必须为手机定义 72dp 和平板电脑 80dp 的“总左边距尺寸”,并将其用作分隔线 View 的左边距。第二个问题是在平板电脑上你有一个 8dp 的右填充。我这样说:如果您使用 ListView,请拧紧规范并设置自定义分隔符,该分隔符将在项目之间绘制。如果您使用 RecyclerView,请编写一个不错的 ItemDecorator,它将在项目上添加分隔符。

编辑 2

?listPreferredPaddingLeft?listPreferredPaddingRight 将在手机上扩展为 16dp,在平板电脑上扩展为 24dp(遵循 RTL 设置)。您可以将这些值用于列表项中的左右填充。然后为图标保留 40dp,间距为 16dp,最后是内容。

关于android - 带有头像、文本和图标的列表的 Material 设计建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27661305/

有关android - 带有头像、文本和图标的列表的 Material 设计建议的更多相关文章

  1. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  2. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  3. ruby - RVM 使用列表[0] - 2

    是否有类似“RVMuse1”或“RVMuselist[0]”之类的内容而不是键入整个版本号。在任何时候,我们都会看到一个可能包含5个或更多ruby的列表,我们可以轻松地键入一个数字而不是X.X.X。这也有助于rvmgemset。 最佳答案 这在RVM2.0中是可能的=>https://docs.google.com/document/d/1xW9GeEpLOWPcddDg_hOPvK4oeLxJmU3Q5FiCNT7nTAc/edit?usp=sharing-知道链接的任何人都可以发表评论

  4. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  5. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  6. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  7. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  8. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  9. ruby-on-rails - 带有 Zeus 的 RSpec 3.1,我应该在 spec_helper 中要求 'rspec/rails' 吗? - 2

    使用rspec-rails3.0+,测试设置分为spec_helper和rails_helper我注意到生成的spec_helper不需要'rspec/rails'。这会导致zeus崩溃:spec_helper.rb:5:in`':undefinedmethod`configure'forRSpec:Module(NoMethodError)对thisissue最常见的回应是需要'rspec/rails'。但这是否会破坏仅使用spec_helper拆分rails规范和PORO规范的全部目的?或者这无关紧要,因为Zeus无论如何都会预加载Rails?我应该在我的spec_helper中做

  10. ruby-on-rails - 设计注册确认 - 2

    我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:

随机推荐