簡體   English   中英

Nexus 5中的Android按鈕變小

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM