1

Я использую PercentRelativeLayout из библиотеки поддержки дизайна, и я хочу установить разные проценты для 7-дюймового и 10-дюймового планшета.Как сделать динамический процент в PercentRelativeLayout?

Например, если у меня есть ImageView, как показано ниже.

<ImageView 
    android:id="@+id/contactDoc" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:layout_widthPercent="70%" 
    app:layout_heightPercent="70%" 
    android:layout_centerHorizontal="true" 
    android:clickable="true" 
    android:src="@drawable/dashboard_contactdoctor" /> 

теперь, если я хочу, чтобы установить 70% для 7-дюймового планшета и 60% для 10inch таблетки без другой папки макета, как sw720dp. Могу ли я это сделать? Помощь приветствуется.

+0

Теоретически вы можете использовать ресурс ценности. Я не уверен, что тип данных относится к этому проценту, хотя я не помню, что существует тип ресурса 'float'. – CommonsWare

+0

как насчет того, чтобы не сделать разный макет, просто другой стиль? – poss

+0

да на самом деле традиционным способом мы можем использовать измерение через dimens.xml для разных размеров экрана, но для Percent мы не можем .. – Pranav

ответ

1

Эти проценты fraction ресурсы. Вы должны иметь возможность установить res/values/fractions.xml и res/values-sw720dp/fractions.xml, где вы найдете define the values for the fractions. Затем в макете используйте @fraction/whatever_you_called_it.

+0

Спасибо, это то, что я ищу, не беря на себя ответственность за время исполнения или разные папки .. – Pranav

0

Вы можете использовать различные макеты для разных размеров экрана. Вы можете прочитать об этом в документации: https://developer.android.com/training/multiscreen/screensizes.html

возможность wihtout предоставления нескольких макетов было бы разместить ImageView внутри LinearLayout с android:weightSum 10, а затем установить вес ImageView программно:

LinearLayout.LayoutParams layoutParams = yourView.getLayoutParams(); 
layoutParams.weight = WHATEVER; 
yourView.setLayoutParams(layoutParams); 
+1

В этом вопросе конкретно говорится «без создания другой папки макета». – CommonsWare

+0

извините, я отредактировал свой ответ – Katharina

0

Попробуйте использовать constraint layout, он доступен на Android 2.2 и после.

С помощью этого, вы можете добавить как вертикальное, так и горизонтальное руководство по проценту экрана, а затем установить высоту и ширину ImageView относительно этих руководящих принципов

+0

в зависимости от экрана, это хорошо, но опять же вопрос можно задать для разных значений без разницы между разными значениями. – Pranav

0

Прежде всего, вам нужно будет обнаружить планшет 7 "или 10". Я предполагаю, что вы уже знаете, как это сделать на основе вашего вопроса. Если нет, проверьте this great answer.

После вы знаете, какое устройство вы имеете дело, используйте следующий код, чтобы поместить внутри if условия (или где-то еще), чтобы определить процент вашего зрения в коде:

View view = findViewById(R.id.yourView); 
    PercentLayoutHelper.PercentLayoutParams params = 
      (PercentRelativeLayout.LayoutParams) view.getLayoutParams(); 
    PercentLayoutHelper.PercentLayoutInfo info = params.getPercentLayoutInfo(); 
    info.heightPercent = 0.60f; 
    view.requestLayout(); 

на основе another great answer.

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