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

我正在GridLayout下创build一个带有可绘制TextView

我想把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的中间?

Solutions Collecting From Web of "Android的TextView可绘制,改变可绘制和文本之间的填充?"

你需要结合drawablePaddingpadding来获得所需的结果。

在XML中:

android:drawablePadding = paddingValue

要么

编程方式:

TextView txt;

txt.setCompoundDrawablePadding(paddingValue)

android:drawablePadding是给padding绘制图标的最简单的方法,但是你不能给paddingRightpaddingLeft绘制图标。 这给可绘制的两边填充。

你可以使用层列表。

之前:

在这里输入图像说明

为shape创buildxml – 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 。 您也可以添加topleftbottom 。 这样你可以举例来说:填充左右可绘制而不用调整textView的总高度。