2014-11-27 6 views
0

Я создаю кнопку динамически для определенного экрана. Он хорошо виден в эмуляторе, который выглядит очень маленьким на устройстве (Nexus 5).Кнопка Android становится маленькой в ​​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); 

Что еще я должен сделать для четко набирать кнопки в устройстве. ТИА

+0

Помните, что вы используете ** pixels ** в коде вместо использования ** dp ** (** sp ** для шрифтов). Поэтому они неправильно масштабируются. –

+0

Нужно ли использовать, например, updt_btn_params.width = 80dp; исправьте меня, если я ошибаюсь. – kavuru

+0

@ kavuru, Да, я думаю, это то, что пытался сказать Der Golem, и использовать 9sp для вашего TextSize. – paulkayuk

ответ

1

Проблема заключается в том, что вы используете эти:

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

При этом вы устанавливаете ширину и высоту в пикселях, которая является то, что вы никогда не должны делать. Различные устройства имеют разную плотность пикселей, что означает, что размер пикселей варьируется от устройства к устройству. Nexus 5 имеет довольно высокую плотность пикселей, что делает ваши кнопки очень маленькими.



Там теперь 2 способа обойти это:

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-файле.

В там вы можете задать ширину и высоту в «дп», как это:

layout_width="80dp" 
layout_height="45dp" 

Необходимо использовать «дп» вместо «рх», чтобы сделать кнопки выглядят точно так же на каждое устройство.

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