[英]Android button becomes small in Nexus 5
我正在为特定屏幕动态创建一个按钮。 它在Emulator中清晰可见,而在Device(Nexus 5)中看起来很小。
在模拟器中:
在设备中:
我正在使用以下代码在代码中创建按钮:
LayoutParams updt_btn_params = new LayoutParams();
update_data = new Button(this);
update_data.setText("Update");
update_data.setTextSize(9);
updt_btn_params.width=80;
updt_btn_params.height=45;
updt_btn_params.gravity=Gravity.CENTER_HORIZONTAL;
update_data.setOnClickListener(update_listnr);
update_data.setLayoutParams(updt_btn_params);
为了使Device中的按钮清晰可见,我还需要做什么。 TIA
问题是您正在使用这些:
updt_btn_params.width=80;
updt_btn_params.height=45;
以此设置宽度和高度(以像素为单位),这是您永远都不应做的。 不同的设备具有不同的像素密度,这意味着像素的大小因设备而异。 Nexus 5具有很高的像素密度,因此您的按钮非常小。
现在有两种解决方法:
1.在资源中的dimen.xml中定义值
您的资源中有一个文件夹“值”,其中应包含dimen.xml。 在这种情况下,您可以像这样定义按钮的尺寸:
<dimen name="width">80dp</dimen>
<dimen name="height">45dp</dimen>
然后,您可以通过以下方式将它们读入代码中:
updt_btn_params.width = getResources().getDimensionPixelSize(R.dimen.width);
updt_btn_params.height = getResources().getDimensionPixelSize(R.dimen.height);
2.使用XML
但是,如果您可以在XML文件中定义活动的整体布局。
在这里,您可以像这样在“ dp”中定义宽度和高度:
layout_width="80dp"
layout_height="45dp"
必须使用“ dp”而不是“ px”来使每个设备上的按钮看起来完全相同。
float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ht, getResources().getDisplayMetrics());
float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wt, getResources()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.