【问题标题】:Change gravity of image drawable in textview在textview中更改可绘制图像的重力
【发布时间】:2017-07-17 19:07:01
【问题描述】:

我在 TextView 中添加了图像 Drawable start。问题是我无法在 TextView 中控制 Drawable 的重力

我需要达到的目标

到目前为止我的成就

这是我的文本视图

        <TextView
            android:id="@+id/tv_8_digit_check"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawablePadding="@dimen/dimen_4"
            android:drawableStart="@drawable/ic_validate"
            android:text="@string/at_least_8_characters_txt"
            android:textColor="@color/white_trans"
            android:textSize="12sp" />

关于如何将 Drawable 的重力设置为顶部/开始的任何建议?谢谢

【问题讨论】:

    标签: android android-layout textview android-drawable android-gravity


    【解决方案1】:
    1. 尝试使用android:gravity="top"

      如果它不起作用,那么像这样使用负边距

    2. android:drawablePadding="-20sp"

    3. 另一种方法是在旁边加上ImageView TextViewLinearLayout 里面,这样你就可以应用重力了

    【讨论】:

    • 重力顶部在我的情况下不起作用。关于填充,我已经必须为其他目的分配一些填充。
    • 然后去第三个想法
    • 是的,最终做第三个解决方案。我知道该解决方案,但我认为有人可能对此有更好的解决方案。谢谢
    【解决方案2】:

    使用 checkbox 代替 textview Drawable,并在可以使用此图像的地方添加自定义 drawable

    【讨论】:

    • 你可以更改 CheckBox drawable android:button="@drawable/your_drawable" android:gravity="top" android:paddingLeft="6dp"
    【解决方案3】:

    我建议你把图片放到 imageview 中。将 imageview 和 textview 放在 Linearlayout 中,并将重力设置为top。也减小文本和图像的大小。

    【讨论】:

      【解决方案4】:
      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:orientation="horizontal"
          android:gravity="top">
      
          <ImageView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginRight="@dimen/dimen_4"
              android:src="@drawable/ic_validate"/>
          <TextView
              android:id="@+id/tv_8_digit_check"
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:layout_weight="1"
              android:text="@string/at_least_8_characters_txt"
              android:textColor="@color/white_trans"
              android:textSize="12sp" />
      
      </LinearLayout>
      

      【讨论】:

      • 我知道这个解决方案会奏效。但问题是嵌套布局。和视图优化,如果它是为了在布局中添加另一个视图,为什么 android 构建复合可绘制对象以设置在同一个 TextView 中?
      • 通常当文本很短时,复合可绘制是个好主意,但是当你想要自定义的东西时它就无济于事了。你可以设置 android:maxLines="1" 并减小文本大小,但是在小屏幕上可能会导致问题。
      • 你也可以在主TextView下为“Character”创建额外的TextView
      【解决方案5】:

      使用复选框而不是 textview 并禁用该视图的单击和焦点

      <CheckBox
              android:gravity="top"
              android:button="@drawable/ic_right_managed"
              android:clickable="false"
              android:focusable="false"
              text="I look like a check box but beware I'm not"/>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-12
        • 1970-01-01
        • 2013-10-22
        • 2019-08-19
        • 2023-03-19
        相关资源
        最近更新 更多