【问题标题】:Change several layouts for different densities at the same time同时更改不同密度的多个布局
【发布时间】:2015-10-22 10:58:38
【问题描述】:

如果我对同一个视图有三种不同的布局(比如说,一种用于手机,一种用于平板电脑,一种用于横向平板电脑)并且我想添加/更改它们三个共享的属性(比如说, android:background),有没有办法在一个地方添加/更改它并在其他两个布局中自动拥有它?有没有替代复制粘贴的方法?

【问题讨论】:

  • 如果您以编程方式更改值,它将应用于当前使用的布局,这大概是您想要的?
  • 我可以将它用于非常特定的时刻,但不像一般规则。无论如何,谢谢。

标签: android android-layout android-studio android-xml


【解决方案1】:

不幸的是,并非如此。您可以为每组元素设置单独的布局,并使用include 将它们包含在每个后续布局中,然后只需更新单个布局即可更新所有元素。但这意味着有很多独立的布局。一个很好的例子是使用单独的Toolbar 布局,如下所示:

工具栏布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    style="@style/Toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

然后在您要使用的所有布局中添加此行Toolbar

<include layout="@layout/toolbar" />

这种技术可以应用于任何你喜欢的东西,并且允许你将来只编辑每个单独的布局一次,并在你使用它的任何地方应用它。您还可以在包含下或代码中编辑这些布局内的尺寸。

实现您想要的唯一其他方法是在代码中明确处理它,但我不建议这样做。

【讨论】:

    【解决方案2】:

    您可以为使用background 属性的小部件(例如TextView 或LinearLayout)应用style,并确定该样式中的background 属性。 更改 style 中的 background 属性将影响之前应用此样式的所有小部件。

    http://developer.android.com/guide/topics/ui/themes.html

    【讨论】:

    • 嗯.. 好吧,我的例子不是很好,因为是的,background 是一种有意义的风格。我更多地在考虑 vguzzi 建议的方向,或者可能是 Android Studio 的插件/功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2020-06-13
    相关资源
    最近更新 更多