Nexus 5中的Android按钮变小

时间:2014-11-27 08:58:10

标签: android android-button nexus-5

我正在为特定屏幕动态创建一个按钮。它在模拟器中清晰可见,在Device(Nexus 5)中看起来非常小。

在模拟器中:

enter image description here

在设备中: enter image description here

我在代码中使用以下代码创建按钮:

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);

我还需要做些什么才能在设备中清楚地获取按钮。 TIA

2 个答案:

答案 0 :(得分:1)

问题是你正在使用这些:

updt_btn_params.width=80;
updt_btn_params.height=45;

使用此功能,您可以设置宽度和高度(以像素为单位),这是您永远不应该做的事情。不同的设备具有不同的像素密度,这意味着像素的大小因设备而异。 Nexus 5具有相当高的像素密度,使您的按钮非常小。



现在有两种解决方法:

<强> 1。在资源中定义dimen.xml中的值

在您的资源中,有一个文件夹“values”应包含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”才能使每个设备上的按钮看起来完全相同。

答案 1 :(得分:0)

float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ht, getResources().getDisplayMetrics());
float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wt, getResources()