【发布时间】:2011-12-29 22:59:23
【问题描述】:
我正在尝试基于 API Demos Sample Code 构建一个非常简单的 ExpandableListActivity:
不幸的是,尽管演示只使用了默认布局,但布局看起来并不正确。似乎文本缩进不够,以至于展开/折叠图标与列表项文本重叠,如屏幕截图所示。
为什么会发生这种情况,我该如何解决?
谢谢!
【问题讨论】:
标签: android expandablelistview
我正在尝试基于 API Demos Sample Code 构建一个非常简单的 ExpandableListActivity:
不幸的是,尽管演示只使用了默认布局,但布局看起来并不正确。似乎文本缩进不够,以至于展开/折叠图标与列表项文本重叠,如屏幕截图所示。
为什么会发生这种情况,我该如何解决?
谢谢!
【问题讨论】:
标签: android expandablelistview
问题出在示例代码的getGenericTextView()方法上:
// Set the text starting position
textView.setPadding(36, 0, 0, 0);
setPadding(...) 以像素为单位设置填充(内部空间),这意味着这种缩进方法的结果会因设备而异。您似乎正在使用水平屏幕分辨率相对较大的 hdpi 设备,导致 TextView 左侧的视觉空间太小。关于这个问题的更多解释,请阅读documentation here。
话虽如此,您可以通过设置密度独立像素 (d(i)p) 值轻松克服该问题,这样视觉上的缩进空间在不同分辨率下将是相同的。您可以为此使用TypedValue 实用程序类:
int dips = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 36, getResources().getDisplayMetrics());
或者,您可以从 xml 扩展 TextView,您可以在设计时在其上设置与密度无关的属性,而不是在运行时动态进行。
【讨论】: