【问题标题】:Changing android:layout_height and android:gravity in styles.xml在 styles.xml 中更改 android:layout_height 和 android:gravity
【发布时间】:2017-11-27 11:26:37
【问题描述】:

我是 android 开发的新手,我偶然发现了一个我无法在现有 StackOverflow 问题的帮助下解决的问题。

在自定义项目列表中,我正在加载一个 TextView 对象,该对象可以使用 2 种不同的样式(均在 styles.xml 中定义) - 如果有辅助 TextView 对象,应用的样式为 itemHeadingText_Medium,如果不是则为 itemHeadingText_Large。我正在 ListItemAdapter 类中以编程方式更改样式。

<!-- Heading in each list item -->
<style name="itemHeadingText_Large" parent="@android:style/TextAppearance.Large">
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">@android:color/black</item>

    <!-- Testing height and gravity -->
    <item name="android:layout_height">100dp</item>
    <item name="android:gravity">center_vertical</item>
</style>

<!-- Heading in each list item -->
<style name="itemHeadingText_Medium" parent="@android:style/TextAppearance.Medium">
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">@android:color/black</item>
</style>

遗憾的是,android:layout_heightandroid:gravity 并未应用于视图,整个应用看起来像 that。下面是两个 TextViews 的定义方式:

        <TextView
            android:id="@+id/heading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@android:color/darker_gray"/>
        <TextView
            android:id="@+id/secondary"
            style="@style/itemSecondaryText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@android:color/holo_red_light"/>

我想将屏幕截图中提供的第二项的 Lorem Ipsum 标题垂直居中。

编辑:2017 年 6 月 25 日

我设法通过使用 getLayoutParams().height 以编程方式更改高度并将 android:gravity 属性添加到 TextView xml 定义来实现我想要的 - 之后两种样式中的所有文本都可以在其 TextView 中垂直居中。

尽管如此,我关于如何在 styles.xml 中做到这一点的问题仍然悬而未决!

【问题讨论】:

  • 能否请您发布此布局的完整 XML 文件代码?
  • @ZohaibHassan 当然,这里是:pastebin.com/y8nA2tbh
  • 我会检查您的代码并尽快回复您。
  • 同时,我通过在项目中添加一些 java 代码(2017 年 6 月 25 日的编辑)达到了预期的效果。不过,我仍然很好奇如何在 xml 文件中做到这一点!

标签: android xml gravity


【解决方案1】:

如果视图大于文本,android:gravity 将指定文本在 TextView 中的布局方式

android:layout_gravity 将指定 View 本身在其 ViewGroup 中的布局方式。

我会尝试用 layout_gravity 替换重力

【讨论】:

  • 使用 layout_gravity 时没有可见的变化。我在这里使用重力是因为我最初的想法是让 TextView 更大,然后在其中居中放置文本。
【解决方案2】:

我在您的代码中看到的问题是:

 <TextView
        android:id="@+id/secondary"
        style="@style/itemSecondaryText" // Look at this line
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_red_light"/>

您正在为您的文本视图使用“itemSecondaryText”样式,但在您的styles.xml 中没有任何名为“itemSecondaryText”的样式。您的 style.xml 中有“itemHeadingText_Medium”和“itemHeadingText_Large”,但没有名为“itemSecondaryText”的项目。

我想这是问题所在,否则一切看起来都很好。

【讨论】:

  • 这是另一个 TextView,用于辅助文本(我提供的截图中的“Ipsum Ipsum Lorem Ipsum”),它运行良好。就像我说的那样,我仅以编程方式更改第一个 TextView 的样式。所以这不是问题。
  • TextView 正在更改的样式正在使用“标题”id。
猜你喜欢
  • 1970-01-01
  • 2019-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
相关资源
最近更新 更多