Какие единицы применяются при программном объявлении вида? - PullRequest
0 голосов
/ 06 февраля 2019

При добавлении представления в файл axml можно просто указать размер и единицы атрибута представления, например:

<TextView
    android:TextSize = "10sp"
    android:layout_marginTop = "10dp" />

Как сказано в этот ответ , есть определенные единицы для определенных целей.

Мой главный вопрос: при динамическом применении размера (по коду), какие единицы применяются для размера?

Например, при объявлении TextSize следующим образом:

TextView tv = new TextView();
tv.TextSize = 10;

Какие единицы измерения применяются для размера текста?зр?дп?ПВ?

И самое главное, как я могу изменить их в соответствии со своими потребностями?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Первый:

Я думаю, вам следует максимально избегать заданного размера программным способом.

Второй:

px Пиксели: соответствует фактическим пикселям на экране.

dp или dip-независимых пикселей, не зависящих от плотности: абстрактная единица измерения, основанная на физической плотностиэкран.Эти единицы относятся к экрану с разрешением 160 точек на дюйм, поэтому один пиксель на пиксель на экране с разрешением 160 точек на дюйм

sp Независимые от масштаба пиксели: это похоже на единицу измерения dp, но этотакже масштабируется по предпочтению размера шрифта пользователя

И в вашем третьем вопросе я думаю:

, например:

для текста редактирования, вы не должныиспользуйте константу для ширины следующим образом:

  <TextView
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:text="@string/banklist_firstselectbank"
        style="@style/TextAppearanceHeadline2"
        android:gravity="center"/>

Я думаю, что лучше использовать начало и конец поля следующим образом:

 <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:text="@string/banklist_firstselectbank"
        style="@style/TextAppearanceHeadline2"
        android:layout_marginEnd="50dp"
        android:layout_marginStart="50dp"
        android:gravity="center"
        />

И использовать как можно больше полей, таких как: гравитация и др. вместо постоянного числа.

0 голосов
/ 06 февраля 2019

Привет @Daniel, если вы программно генерируете текстовое представление как следующий код

TextView tv = new TextView();
tv.setTextSize(10); // Sets text in sp (Scaled Pixel).

И если вы хотите установить размер текста с другой единицей, чтобы вы могли достичь следующим способом.

TextView tv = new TextView();
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, 10); // Sets text in px (Pixel).
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10); // Sets text in dip (Device Independent Pixels).
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10); // Sets text in sp (Scaled Pixel).
tv.setTextSize(TypedValue.COMPLEX_UNIT_PT, 10); // Sets text in pt (Points).
tv.setTextSize(TypedValue.COMPLEX_UNIT_IN, 10); // Sets text in in (inches).
tv.setTextSize(TypedValue.COMPLEX_UNIT_MM, 10); // Sets text in mm (millimeters).

По умолчанию Android использует «sp» для размера текста и «px» для размера представления.

Для других размеров представления мы можем установить в пикселях (пикселях), но если вы хотите настроить единицу измеренияВы можете использовать пользовательские методы

/**
     * Converts dip to px.
     *
     * @param context -  Context of calling class.
     * @param dip     - Value in dip to convert.
     * @return - Converted px value.
     */
    public static int convertDipToPixels(Context context, int dip) {
        if (context == null)
            return 0;
        Resources resources = context.getResources();
        float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, resources.getDisplayMetrics());
        return (int) px;
    }

Из вышеописанного метода вы можете преобразовать YOUR_DESIRED_UNIT в пиксели и затем установить для просмотра.Вы можете заменить

TypedValue.COMPLEX_UNIT_DIP

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

Надеюсь, я хорошо объяснил это.

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