центрирование изображения в составном текстовом просмотре, перемещение текста вниз - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть изображение размером 6x10 dp

Я хочу добавить его динамически в textView.

У меня есть 3 вида текста, и в соответствии с некоторым состоянием я добавляю его как составной чертеж.

TextViewCompat.setCompoundDrawablesRelative(targetTextView, null, null, drawable, null);

Я хочу, чтобы изображение было почти центрировано по вертикали к текстовому виду + ​​на 1 sp меньше, чем центр. Таким образом, в каждом текстовом представлении я добавил

      android:gravity="center_vertical"

так:

Я пытался

1) создайте холст высотой 8 x 10 и отцентрируйте его по текстовому виду, а затем ящики привязываются к (0,1sp, 10, 8-1sp)

но кажется, что текстовое представление также сдвинуто вниз относительно его положения перед добавлением compund imageView.

enter image description here

2) создайте холст с высотой текстового представления и отцентрируйте его к текстовому представлению, а затем ящики привязываются к (0, (высота textView - 6) / 2, 10, ...)

enter image description here

но затем ожидание обозревателя. Дерево делает код более сложным.

Есть ли другой способ сделать это?

вот мой код для опции (1):

  private void tintAndAddPadding(

...


      @DrawableRes int drawableId, @ColorRes int colorId) {
    Drawable drawable =
        Preconditions.checkNotNull(AppCompatResources.getDrawable(getContext(), drawableId));
    Drawable drawableWithTint = DrawableCompat.wrap(drawable);
    DrawableCompat.setTint(
        drawableWithTint.mutate(), getContext().getResources().getColor(colorId));
    // Bitmap dimensions sets the canvas dimensions
    Bitmap bitmap =
        Bitmap.createBitmap(
            getContext()
                .getResources()
                .getDimensionPixelSize(R.dimen.account_menu_collapse_expand_width),
            getContext()
                .getResources()
                .getDimensionPixelSize(R.dimen.account_menu_collapse_expand_canvas_height),
            Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmap);

    // Drawable bounds should be all 4 coordinates on the canvas to draw on.
    // This implies the drawable width and height.
    drawableWithTint.setBounds(
        0,
        getContext()
            .getResources()
            .getDimensionPixelSize(R.dimen.account_menu_collapse_expand_top_padding)
        , canvas.getWidth(),
        canvas.getHeight() -
            getContext()
                .getResources()
                .getDimensionPixelSize(R.dimen.account_menu_collapse_expand_top_padding));
    drawableWithTint.draw(canvas);

   TextViewCompat.setCompoundDrawablesRelative(targetTextView, null, null, drawableWithTint, null);
    // Padding between text and drawable
    targetTextView.setCompoundDrawablePadding(
        getContext()
            .getResources()
            .getDimensionPixelSize(R.dimen.account_menu_collapse_expand_left_padding))
  }
  • Я знаю, что могу использовать относительный план, но моя команда, тем не менее, рекомендует мне использовать составной текст.
...