Android TextView 可绘制,更改可绘制和文本之间的填充?

Posted

技术标签:

【中文标题】Android TextView 可绘制,更改可绘制和文本之间的填充?【英文标题】:Android TextView drawable, change padding between drawable and text? 【发布时间】:2013-10-22 04:01:34 【问题描述】:

我正在创建一个TextView,下面有一个可绘制对象,位于GridLayout 中。

我想把drawable放到TextView的中间;我试过了 setCompoundDrawablePadding(-75),它只会改变文本的位置。

当前代码:

    TextView secondItem = new TextView(this);
    GridLayout.LayoutParams second = new GridLayout.LayoutParams(row2, col1);
    second.width = halfOfScreenWidth;
    second.height = (int) (quarterScreenWidth * 1.5);
    secondItem.setLayoutParams(second);
    secondItem.setBackgroundResource(R.color.MenuSecond);
    secondItem.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, R.drawable.ic_action_new);
    secondItem.setText("Text");
    secondItem.setCompoundDrawablePadding(-180);
    secondItem.setGravity(Gravity.CENTER);
    secondItem.setTextAppearance(this, android.R.style.TextAppearance_Large_Inverse);
    gridLayout.addView(secondItem, second);

如何将 text 和 drawable 设置到 TextView 的中间?

【问题讨论】:

【参考方案1】:

您需要组合 drawablePaddingpadding 以获得所需的结果。

【讨论】:

如何将它组合成不同的文本(例如不同的语言环境)?【参考方案2】:

在 XML 中:

android:drawablePadding = paddingValue

以编程方式:

TextView txt;

txt.setCompoundDrawablePadding(paddingValue)

android:drawablePadding 是为可绘制图标提供填充的最简单方法,但您不能提供特定的一侧填充,例如 paddingRightpaddingLeft 的可绘制图标。这为可绘制对象的任一侧提供了填充。

【讨论】:

【参考方案3】:
  <Button
            android:id="@+id/otherapps"
            android:layout_
            android:layout_
            android:background="@drawable/btn_background"
            android:text="@string/other_apps"
            android:layout_weight="1"
            android:fontFamily="cursive"
            android:layout_marginBottom="10dp"
            android:drawableLeft="@drawable/ic_more"
            android:paddingLeft="8dp" //for drawable padding to the left
            android:textColor="@android:color/holo_red_light" />`enter code here`

【讨论】:

【参考方案4】:

您可以使用图层列表。

之前:

为形状创建 xml - shape_rectangle.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:right="5dp">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="@color/my_color" />
        <size
            android:
            android: />
    </shape>
</item>
</layer-list>

之后:

在 xml 中,有类似 android:right 的东西。您也可以添加top,left,bottom。通过这种方式,您可以给出例如:在不调整 textView 总高度的情况下向 drawable 左右填充。

【讨论】:

以上是关于Android TextView 可绘制,更改可绘制和文本之间的填充?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Android 主屏幕小部件中向 im​​ageView 添加自定义可绘制对象?

以编程方式在 TextView 中设置左可绘制对象

Android L 忽略形状作为可绘制背景

为 TextView 的一部分设置可绘制背景

如何在 TextView 中将文本与其复合可绘制对象对齐?

Textview drawable 不在远程视图中显示可绘制图像