Java Android-Editbox可绘制左侧未正确填充

Java Android-Editbox可绘制左侧未正确填充,java,android,android-layout,Java,Android,Android Layout,我有一个editbox,在其中定义了一个android:drawableLeft属性 我希望EditBox看起来像这样(来自Instagram应用程序): 请注意,图像正确居中,并且图像的上/右/左/下填充看起来完全相同。右侧的文本受图像大小的限制(在我绘制的蓝线之间) 当我尝试执行相同操作时,我的EditText视图如下所示: 我还将此多行编辑文本框的行号设置为3,但这无助于修复框的大小。在图像的顶部/底部有一个很大的填充,我不知道它是从哪里来的。这是我的密码: 布局 <Linear

我有一个editbox,在其中定义了一个
android:drawableLeft
属性

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

请注意,图像正确居中,并且图像的上/右/左/下填充看起来完全相同。右侧的文本受图像大小的限制(在我绘制的蓝线之间)

当我尝试执行相同操作时,我的EditText视图如下所示:

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

布局

<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>
如何重新调整布局,使其看起来与上面显示的Instagram相同


谢谢

有两种方法可以做到这一点

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

  • 您是否尝试过将android:gravity=“top | left”更改为android:gravity=“center|u vertical”

    只需将图像与EditText分开,使用ImageView和EditText并使用相对布局将其包装。遇到同样的问题。尝试使用9patch,但它没有用。导致底部和顶部填充的是
    android:lines=“3”
    。尝试将其设置为1以查看差异。我不认为有一个简单的解决办法,所以我建议你遵循@EvZ的建议。
    <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 );