在 xml 中具有可绘制背景的 Android TextView 填充

标签 android textview

所以... a known Android issue是设置 drawable TextView 的背景结合设置 padding (例如 paddingLeft )仅在 background 时有效在 padding之前设置.
到目前为止一切顺利(而且很烦人)。

但是,如果我想通过 .xml(而不是以编程方式)执行该操作怎么办? :(
有任何想法吗?

这是我想要的:
left padding should be bigger than drawable-to-text padding

但不管怎样paddingLeft我设置了,没有任何变化。
我肯定它应该 工作,但也许这是一个布局错误?

这是(非常简化的)布局:

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >

<Button
    android:id="@+id/call"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:background="@drawable/call_btn"
    android:paddingLeft="@dimen/DESIRED_LEFT_PADDING"
    android:paddingStart="@dimen/DESIRED_LEFT_PADDING"
    android:drawableLeft="@drawable/ic_phone"
    android:drawablePadding="@dimen/drawable_padding"
    android:drawableStart="@drawable/ic_phone"
    android:singleLine="true" />

<Button
    android:id="@+id/address"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/call"
    android:paddingLeft="@dimen/rest_item_btn_side_margin"
    android:paddingStart="@dimen/rest_item_btn_side_margin"
    android:background="@drawable/navigate_btn"
    android:drawableLeft="@drawable/ic_address"
    android:drawablePadding="@dimen/drawable_padding"
    android:drawableStart="@drawable/ic_address"
    android:gravity="start|center_vertical"
    android:singleLine="true" />  
</RelativeLayout>  

这个布局位于另一个布局中,使用 <include>标签:

<CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<ScrollView
    android:id="@+id/scrollview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/appbar"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:background="@android:color/transparent" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@android:color/transparent" >

        <include
            android:id="@+id/btn_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            layout="@layout/btn_layout" />
    </RelativeLayout>
</ScrollView>
</CoordinatorLayout>

解决方案
好吧,这很尴尬,但我只有一个全局 Button style设置 paddingLeft ...我确定 xml 声明会覆盖 style ... 显然并非总是如此。这是错误还是我不应该相信这种行为?
总之,问题终于解决了:)

最佳答案

试试这个..如果这符合您的要求:

  <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:gravity="center"
        android:padding="10dip"
        android:drawablePadding="10dip"
        android:drawableLeft="@drawable/ic_launcher"
        android:background="@drawable/preview_dailog_bg"
        android:text="swipe_element"
        android:textColor="@android:color/white"
        android:layout_centerInParent="true"/>

关于在 xml 中具有可绘制背景的 Android TextView 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33049667/

相关文章:

java - 如何在正文中 POST 原始类型 JSON 数据?

java - setTextSize 方法后 textView.getLineCount() 返回 0

android - 如何在Android通知中创建可点击的Textview?

android - 多行 TextView 的 wrap_content 宽度

android - 打开应用程序来电或去电断开后

android - 使用 GStreamer 的 Android 上的 Mpeg TS 播放器

android - TileOverlay 与 android 和谷歌地图

android - Gradle 不生成输出 APK

android - Tablayout 自定义 View 不采用全高 android?

android - 使用短文本时选取框不会滚动