【问题标题】:Why layout_gravity property doesn't show up in Android Studio?为什么 layout_gravity 属性没有出现在 Android Studio 中?
【发布时间】:2015-08-26 07:33:34
【问题描述】:

我一直试图在工具栏中将徽标(ImageView)居中。我终于做到了,但花了这么长时间的主要原因是,我在自动完成或 Android Studio 的“设计”窗格>“属性”表中找不到 layout_gravity 属性。只有与重力相关的属性是foregroundGravity。

现在,我认为 ImageView 是一个 ImageView。它必须在任何地方都有 layout_gravity 但无法找到该属性让我认为当您使用 android.support.v7.widget.Toolbar 时它不可用。 有没有人有过类似的经历,或者你知道为什么会这样吗?

以下是我的代码,最低 API 级别为 10。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/ColorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:layout_gravity="top"
    >
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/comp_logo"
            android:layout_gravity="center_vertical|center_horizontal"
            />

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

【问题讨论】:

    标签: android android-studio android-toolbar


    【解决方案1】:

    属性上的 layout_ 前缀表示该属性是父 View 的 LayoutParams 的属性

    例如,在您发布的布局中,ImageView 上的layout_gravity 用于告诉Toolbar 将图像放置在何处。 ImageView 本身对该属性没有任何作用。

    请注意,许多视图(例如 TextView)确实支持 gravity 属性,这就是视图将如何布局自己的内容的方式。 layout_gravity 将视图作为一个整体定位在其父视图中,而gravity 将视图的内容定位在该视图中。另见:Gravity and layout_gravity on Android

    Android Studio 没有在您的工具栏上提供layout_gravity 作为选项的原因是,在此布局中,您的工具栏没有父级,因此 Android Studio 不知道哪些布局属性可供它使用。这是有道理的,因为您的布局应该完全独立于您可能放入的任何父级。

    【讨论】:

    • 谢谢@Tanis.7x!我想我快明白了。但是...如果 Android Studio 不知道 View 可以使用哪些属性,为什么它提供 layout_margin 属性?我的猜测是,默认情况下每个视图都可以使用 layout_margin 属性。我对么?我应该去哪里寻找答案?
    • 我无法解释为什么它提供layout_margin - 它仅在父 ViewGroup 的 LayoutParams 扩展 MarginLayoutParams 时可用,但你说得对,它相当普遍。
    猜你喜欢
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 2021-09-25
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多