Есть ли способ изменить цвет фона за кнопкой (button.setBackgroundResource)

#android #button #dynamic #android-linearlayout

#Android #кнопка #динамический #android-linearlayout

Вопрос:

Я новичок в разработке Android, и я пытаюсь создать динамический макет, содержащий TextView и кнопку внутри одной строки.

но у меня небольшая проблема. Я установил свою кнопку в своих источниках Drawables с помощью

  button.setBackgroundResource(R.drawable.ic_comment_black_48px);

  

и теперь я не могу изменить цвет фона за ним.

Я создал newLinearlayout внутри моего основного LinearLayout и создал новый TextView и новую кнопку. Я поместил их внутри дочернего элемента LinearLayout и поместил его в main. Это работа, но не цвет фона за моей кнопкой.

есть ли способ сделать это?

мой XML-макет

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/grey"
    android:id="@ id/historyLayout">

</LinearLayout>

  

моя полная активность

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_history);

        mLinearLayout = findViewById(R.id.historyLayout);

        mMoodSaved = new ArrayList(7); // Define the max size of my ArrayList
        loadData();
        for (int i = 1; i <= 7; i  ) {
            final TextView textView = new TextView(this);
            mLinearLyt = new LinearLayout(this);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            mLinearLyt.setOrientation(LinearLayout.HORIZONTAL);
            textView.setHeight(300);
            textView.setWidth(400);
            textView.setBackgroundColor(Color.RED);
            textView.setTextColor(Color.BLACK);
            textView.setTextSize(12);
            textView.setText(String.valueOf(i));
            mLinearLyt.setBackgroundColor(Color.YELLOW);
            mLinearLyt.addView(textView);
            mLinearLyt.setLayoutParams(params);


            ImageButton button = new ImageButton(this);
            LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
            param2.setMargins(20,50,0,0);
            param2.height = 100;
            param2.width = 100;
            button.setLayoutParams(param2);
            button.setBackgroundResource(R.drawable.ic_comment_black_48px);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    soundConfirm();
                    Toast.makeText(getApplicationContext(), textView.getText(), Toast.LENGTH_LONG).show(); //Display Toast Message
                }
            });
            mLinearLyt.addView(button);
            mLinearLayout.addView(mLinearLyt);
        }
    }
  

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

1. Поделитесь своим XML-кодом

2. @SultanMahmud ok поделился. Это просто базовое линейное описание, позволяющее делать все динамически.

3. Поделитесь полным кодом действия. В идеале setBackgroundResource должен устанавливать фон.

4. @TheAnkush ok поделился. Я хочу создать динамические 7 строк. Они будут содержать некоторые данные из объекта после.

Ответ №1:

Поскольку это кнопка ImageButton, установите

 button.setImageResource(R.drawable.ic_comment_black_48px)
  

вместо setBackgroundResource.

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

1. хорошо, спасибо, это работает. Сейчас мне нужно многое изменить, но я могу изменить backgroundColor, спасибо!