将文本视图中的可绘制图像对齐到中心

Moh*_*rif 13 android textview

我有一个textview,其中包含图像和一些文本.

我以编程方式将可绘制图像添加到文本视图的左侧

txtIDFav.setCompoundDrawablesWithIntrinsicBounds(R.drawable.fav_enabled, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

我已将文本视图与中心对齐

txtIDFav.setGravity(Gravity.CENTER);
Run Code Online (Sandbox Code Playgroud)

现在,textview中的文本与中心对齐.但图像在左侧.

例如:[image] _____________________ mytext

使用_来提供空间是不允许的.

我想将图像与文本对齐.

例如:_____________________ [image] mytext

请指教.

谢谢,感谢.

Dee*_*eva 6

我也面临着同样的问题,但我不想分别使用 Button 和 TextView ,也不想使用 java 代码来制作它。所以我找到了这个。我知道我很晚才给出解决方案。但它可以帮助你

<FrameLayout
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_margin="20dp"
            android:background="@drawable/next_btn_bg_rounded_corners">


            <TextView
                android:id="@+id/btn_restore_purchases"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="@null"
                android:drawableLeft="@mipmap/restore"
                android:drawablePadding="10dp"
                android:drawableStart="@mipmap/restore"
                android:text="@string/restore_purchases"
                android:textAllCaps="false"
                android:textColor="@color/white" />
        </FrameLayout>
Run Code Online (Sandbox Code Playgroud)

中心带有文本的图标


Aya*_*fov 5

你可以尝试这个,它应该有效:

    Spannable span = new SpannableString("  " + txtIDFav.getText());  // or set your text manually

    Drawable drawable;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        drawable = getResources().getDrawable(R.drawable.fav_enabled, getContext().getTheme());
    }
    else {
        drawable = getResources().getDrawable(R.drawable.fav_enabled);
    }

    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
    ImageSpan imageSpan = new ImageSpan(drawable);
    span.setSpan(imageSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    txtIDFav.setText(span);
Run Code Online (Sandbox Code Playgroud)

  • 当您否决答案时,请写下评论,以便我知道问题所在并尝试解决它。 (2认同)

dan*_*mit 0

使用 SpannableString 将可绘制对象嵌入到文本中。

        SpannableStringBuilder textspan = new SpannableStringBuilder("  " + yourText);
        Drawable icon = getResources().getDrawable(R.drawable.fav_enabled);
        // jump drawable to the text view's state (if it is a state drawable)
        icon.setState(textView.getBackground().getState());  // match the background state
        textspan.setSpan(new ImageSpan(icon, ImageSpan.ALIGN_BOTTOM), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        textView.setText(textspan);
Run Code Online (Sandbox Code Playgroud)

  • 现在它不会崩溃,但也不会显示图像。它仅显示文本。 (2认同)