setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)不起作用

时间:2013-12-06 12:04:01

标签: android xml graphics android-edittext android-drawable

我有一些EditText views,我想在左边设置图像,setCompoundDrawablesWithIntrinsicBounds似乎不起作用。图形似乎没有改变。

有谁知道为什么会出现这种情况?

以下是我设置drawables的方法:

        mFirstname.setCompoundDrawablesWithIntrinsicBounds(R.drawable.user_icon, 0, 0, 0);
        mLastname.setCompoundDrawablesWithIntrinsicBounds(R.drawable.user_icon, 0, 0, 0);
        mEmail.setCompoundDrawablesWithIntrinsicBounds(R.drawable.mailicon, 0, 0, 0);
        mPassword.setCompoundDrawablesWithIntrinsicBounds(R.drawable.lockicon, 0, 0, 0);
        mDateOfBirth.setCompoundDrawablesWithIntrinsicBounds(R.drawable.calico, 0, 0, 0);
        mCity.setCompoundDrawablesWithIntrinsicBounds(R.drawable.mailicon, 0, 0, 0);
        mStreet.setCompoundDrawablesWithIntrinsicBounds(R.drawable.mailicon, 0, 0, 0);
        mPostcode.setCompoundDrawablesWithIntrinsicBounds(R.drawable.mailicon, 0, 0, 0);
        mPhoneNumber.setCompoundDrawablesWithIntrinsicBounds(R.drawable.mailicon, 0, 0, 0);

5 个答案:

答案 0 :(得分:15)

如果其他人有这个看似无法解释的问题,请尝试以下方法:

  • 转到您的XML模板。
  • 删除表示它的XML图像。
  • 您的视图应该刷新Compounddrawable。

基本上这部分视图似乎没有在ICS设备上重新启用。希望这能解决一些人的问题!

答案 1 :(得分:6)

另一个解决方案是在UI循环的下一个(布局后)循环中设置复合drawable:

final TextView viewById = (TextView) findViewById(R.id.label);

viewById.post(new Runnable()
{
    @Override
    public void run()
    {
        viewById.setCompoundDrawablesWithIntrinsicBounds(android.R.drawable.ic_menu_call, 0, 0, 0);
    }
});

答案 2 :(得分:0)

当您在xml布局中定义了Drawable(顶部,左侧,右侧,底部)图像时,会出现问题。就像在代码中定义的那个之后应用xml drawable一样。删除xml,然后在任何你想要的代码中执行。

答案 3 :(得分:0)

mBtnNext=(Button) rootView.findViewById(R.id.btnNext);

Drawable drawableRight=new IconicsDrawable(getActivity().getApplicationContext())
               .icon(Ionicons.Icon.ion_arrow_right_a)
                .color(getResources().getColor(R.color.colorBlack))
                .sizeDp(24);

mBtnNext.setCompoundDrawables(null,null,drawableRight,null);

尝试一下,您的问题将得到解决。

答案 4 :(得分:0)

我使用了Ionicons插件。转到以下链接。您将了解如何在Android项目中使用IonIcons。

IonIcons For Android

在您的项目中实现上述Ionicons插件之后。您将获得IconicsDrawable类。

Gradle image

See here to know how to drive IconicsDrawable class in your class

mBtnNext=(Button) rootView.findViewById(R.id.btnNext);

Drawable drawableRight=new IconicsDrawable(getActivity().getApplicationContext())
               .icon(Ionicons.Icon.ion_arrow_right_a)
                .color(getResources().getColor(R.color.colorBlack))
                .sizeDp(24);

mBtnNext.setCompoundDrawables(null,null,drawableRight,null);

希望您现在能理解。