Добавление текста и изображения на кнопку программно в Android - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь, чтобы текст и изображение на кнопке отображались динамически - текст должен отображаться слева, а изображение - справа.Чтобы привести пример, вот изображение, которое я хотел бы получить.

ExampleButton

После поиска нескольких других примеров в StackOverflow, попробовал следующий кодв моей деятельности, но, кажется, не работает.Может кто-нибудь подсказать, пожалуйста, что я делаю не так?

Код:

btn.setTextColor(Color.parseColor("#000000"));
btn.setText("SomeText");
btn.setTextSize(TypedValue.COMPLEX_UNIT_PX, mediumTextSize);

Drawable icon= getApplicationContext().getResources().getDrawable( R.drawable.cal);
icon.setBounds(0, 0, 0, 0); //Left,Top,Right,Bottom
btn.setCompoundDrawablesWithIntrinsicBounds( null, null, icon, null );

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Попробуйте это

           btn.setText("Some Text");
            btn.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
            btn.setGravity(Gravity.CENTER | Gravity.LEFT);
            Drawable myDrawable = 
            getResources().getDrawable(R.drawable.ic_cancel_black_24dp);
            btn.setCompoundDrawablesWithIntrinsicBounds(null,null,myDrawable,null);
0 голосов
/ 29 декабря 2018

Я заметил, что размер изображения очень важен при использовании его на других объектах - когда я настраивал изображение на меньший размер, мой код работал нормально ....

Тот же код, который япытался раньше работал у меня после изменения размера изображения ...

                    Button btn = new Button(this);
                    btn.setTextColor(Color.parseColor("#000000"));
                    btn.setText("SomeText");
                    btn.setTextSize(TypedValue.COMPLEX_UNIT_PX, mediumTextSize);
                    btn.setGravity(Gravity.CENTER | Gravity.LEFT);
                    Drawable icon= getApplicationContext().getResources().getDrawable(R.drawable.cal);
                    btn.setBackgroundResource(R.drawable.light_bg);
                    icon.setBounds(0, 0, 0, 0); //Left,Top,Right,Bottom
                    btn.setCompoundDrawablesWithIntrinsicBounds( null, null, icon, null);

Спасибо всем за помощь и предложения!

...