Android: Как изменить размер кнопки для рисования

#android #button #drawable

#Android #кнопка #drawable

Вопрос:

Если я изначально задаю растровому изображению значение drawableLeft (в xml или с помощью setCompoundDrawablesWithIntrinsicBounds в OnStart и т.д.), Затем изменяю (снова setCompoundDrawablesWithIntrinsicBounds) на другое растровое изображение или AnimationDrawable, вызывая ‘StackOverflowError’. Я не нашел никакого API для выпуска оригинального drawLeft в Google doc. Есть ли какое-либо решение для этого?

 public class TestLinearlayoutActivity extends Activity {
    /** Called when the activity is first created. */
    Button locationTitleButton = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        locationTitleButton = (Button) findViewById(R.id.LocationTitleButton);
    }

    @Override
    public void onStart() {
        super.onStart();

        locationTitleButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
               locationTitleButton.setCompoundDrawablesWithIntrinsicBounds(R.drawable.loading, 0, 0, 0);



            }
        });

    }
}
  

В файле layout есть ресурс по умолчанию для leftDrawable. После приведенного выше setCompoundDrawablesWithIntrinsicBounds в onClick происходит сбой

 11-14 18:18:13.321: ERROR/AndroidRuntime(2187): FATAL EXCEPTION: main
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): java.lang.StackOverflowError
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.util.LongSparseArray.get(LongSparseArray.java:87)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.util.LongSparseArray.get(LongSparseArray.java:79)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getCachedDrawable(Resources.java:1746)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1664)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187):     at and
  

Комментарии:

1. Вау, так что произойдет сбой при запуске вашего кода … это довольно забавно. Серьезно, ты можешь опубликовать какой-нибудь код.

2. добавить код и аварийный стек

3. это полный код для OnClickListener?

4. Также опубликуйте layout.xml файл, а также вы пробовали очевидные исправления… перекомпилируйте проект, очистив его (используя Eclipse). Убедитесь, что ресурсы находятся в файле ресурсов.

5. Хмм, запустил код fine button, изменил изображения и не получил ошибок, подобных вашей. Сообщите мне все ваши параметры, версию SDK, версию Eclipse, версию Android (ADK), платформу, на которой вы программируете.