2015-10-19 3 views
0

В моем приложении карты Google я использую настраиваемый маркер для разных местоположений. Я реализовал это успешно, но мне нужно динамически увеличить размер пользовательского маркера. Я использовал следующий кодДинамически увеличивать размер пользовательского маркера на картах Google

imgView.getLayoutParams().height = 200; 
imgView.getLayoutParams().width = 200; 

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

Пользовательского Маркер Xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <ImageView  
     android:layout_width="36dp" 
     android:layout_height="36dp" 
     android:src="@drawable/marker" /> 

    <TextView   
     android:layout_width="36dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="3dp" 
     android:gravity="center" 
     android:textColor="#FFFFFF" 
     android:textSize="14sp" 
     android:textStyle="bold" /> 

</RelativeLayout> 
+0

Как вы устанавливаете layoutparams в xml? С весом, возможно? –

+0

проверьте мой пользовательский маркер XML – user1517638

ответ

0

С

imgView.getLayoutParams().height = 200; 

вы задаете новую высоту в пикселях, игнорируя плотность пикселей текущего устройства. Вы не должны этого делать.

Вы можете использовать свой текущий метод, чтобы увеличить изображение, выполнив, например.

int height = imgView.getLayoutParams().height; 
imgView.getLayoutParams().height = height * 2; 

, чтобы увеличить их. Вместо того, чтобы сделать изображение жестко запрограммированным 200px независимо от плотности пикселя устройства, это сделает изображение 140px, если оно было 70px, или 200px, если оно было 100px.
Это прекрасно адаптируется к текущему устройству.

Вы также можете работать с дп, указав значение дп, а затем преобразовать его в пикселях:

int dp = 72; 
int height = imgView.getLayoutParams().height; 
imgView.getLayoutParams().height = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics()); 

Это позволит установить высоту до 72, переводя 72 в нужное количество пикселей для текущего устройства ,

Смежные вопросы