【发布时间】: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_height 和 android: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 文件中做到这一点!