[英]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.