在android中,我们可以通过屏幕密度定义资源,例如LDPI,HDPI和MDPI。
我希望构建一个具有TextLayout的UI,其宽度和高度与其旁边的ImageView相同。 ImageView托管的图像与启动器图标的大小相同(HDPI为72px,依此类推)。
有没有办法知道图标在'dp'中有特定的宽度 - 高度(没有kwnoi所以我可以硬编码XML。我认为这是可能的,因为dp独立于设备但找不到任何在dp中获取值的方法。
<TextView
android:id="@+id/holidaylistitem_day"
android:layout_width="<X>dp"
android:layout_height="<Y>dp"
android:text="1st"/>
<ImageView
android:id="@+id/holidaylistitem_type"
android:src="@drawable/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
我需要的是X和Y值,因此两者的大小相同。
答案 0 :(得分:7)
Android Design Guide有一个描述推荐icon dimensions的页面。简而言之,启动器图标为48x48 dp。
答案 1 :(得分:1)
答案 2 :(得分:1)
正如Android Killer所说,“有四种情况,因为Android中有不同类型的设备......”。你可以得到dpi。要将px转换为dp,请使用:
dp =(px * 160)/ dpi
参考:
developer.android
答案 3 :(得分:0)
我为您的情况提供了更好的解决方案,但它有点复杂。我们走了:
如果您无法确定图标大小,但确定它是方形的,并且您希望其宽度/高度与图标相同,则水平放置。你可以这样做:
机器人:layout_alignTop =&#34; @ + ID / holidaylistitem_type&#34; 机器人:layout_alignBottom =&#34 + ID / holidaylistitem_type&#34;
现在您的TextView位置和高度是固定的。然后扩展TextView并执行以下操作:
@覆盖
protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
if (width > height) {
width = height;
}
super.onMeasure(
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
);
}
ImageView大小的Square。