【问题标题】:Android - Editbox Drawable left not padding correctlyAndroid - Editbox Drawable 左侧未正确填充
【发布时间】:2013-12-07 08:39:45
【问题描述】:

我有一个编辑框,我在其中定义了一个 android:drawableLeft 属性。

我希望 EditBox 看起来像这样(来自 Instagram 应用程序):

请注意,图像已正确居中,并且图像的上/右/左/下填充看起来都一样。右边的文字以图片大小为界(在我画的蓝线之间)

当我尝试做同样的事情时,我的 EditText 视图如下所示:

我还将这个多行编辑文本框的行号设置为三,但这无助于修复框大小。图像的顶部/底部有一个很大的填充,我不知道它来自哪里。这是我的代码:

布局

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="10dp"
    android:weightSum="1" >

    <EditText
        android:id="@+id/new_post_edittext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/rounded_edittext"
        android:drawableLeft="@drawable/ic_launcher"
        android:ems="10"
        android:gravity="top|left"
        android:hint="@string/compose_card_hint"
        android:lines="3"
        android:padding="5dip"
        android:drawablePadding="5dp"
        android:textColor="#999999" >

        <requestFocus />
    </EditText>

</LinearLayout>

圆角可绘制

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="5dp"
android:shape="rectangle" >

<solid android:color="#bbbbbb" />

<stroke
    android:width="1dp"
    android:color="#2f6699" />

<corners
    android:bottomLeftRadius="5dp"
    android:bottomRightRadius="5dp"
    android:topLeftRadius="5dp"
    android:topRightRadius="5dp" />

</shape>

还有动态设置图片的代码:

Drawable img = this.getResources().getDrawable( R.drawable.sample_img );
    img.setBounds( 0, 0, 200, 200);

    EditText et = (EditText) findViewById(R.id.new_post_edittext);

    et.setCompoundDrawables( img, null, null, null );

如何重新调整布局以使其看起来与上面显示的 Instagram 相同?

谢谢

【问题讨论】:

  • 只需将图片从EditText中分离出来,使用ImageView & EditText并用相对布局包裹起来。
  • 遇到了同样的问题。试过用9patch但是没用
  • android:lines="3" 导致底部和顶部填充。尝试将其设置为 1 以查看差异。我不认为有一个简单的解决方法,所以我建议你遵循@EvZ 的建议。

标签: java android android-layout


【解决方案1】:

有两种方法可以做到。

  1. 在线性布局/相对布局中使用带有 ImageView 和 TextView 的自定义布局。无论文本和图像大小如何,它都会使您的列表项保持一致。
  2. 结合使用可绘制的 EditText 和线条是一个坏主意。当您需要在默认重力的边缘上显示图像时,请使用 drawableLeft 或 Right。与 EditText 关联的可绘制对象的边距和填充是一项繁琐的任务。

【讨论】:

    【解决方案2】:

    你试过把android:gravity="top|left"改成android:gravity="center_vertical"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      相关资源
      最近更新 更多