59

我正在创建一个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);

如何将文本和可绘制设置到中间TextView

4

4 回答 4

137

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

于 2013-10-14T14:47:02.330 回答
19

在 XML 中:

android:drawablePadding = paddingValue

或者

以编程方式:

TextView txt;

txt.setCompoundDrawablePadding(paddingValue)

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

于 2017-01-07T12:50:26.357 回答
3
  <Button
            android:id="@+id/otherapps"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            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`
于 2018-01-31T07:07:20.360 回答
1

您可以使用图层列表。

前:

在此处输入图像描述

为形状创建 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:width="5dp"
            android:height="5dp" />
    </shape>
</item>
</layer-list>

后:

在此处输入图像描述

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

于 2016-03-10T11:02:33.387 回答