在android中动态更改布局的背景并不能正常工作

时间:2016-06-16 18:54:44

标签: android android-layout

我制作了一个Android应用程序,其中活动的背景颜色随着活动中的RadioButtons的点击而改变。

我借助图片详细阐述了我的问题: 在打开应用程序时: enter image description here

所以我们在点击任何一个RadioButton时都有3个RadioButton,活动的背景颜色应该改变为相应的颜色。

=>当我第一次点击任何一个单选按钮时,背景颜色会被正确反映出来。例如:

enter image description here

单击绿色后,背景颜色变为绿色。

=>但之后,每当我点击任何按钮时,背景颜色都不会立即反映出来。 例如:

enter image description here

我点击了蓝色,但背景颜色仍为绿色。

=>现在,当我点击其他单选按钮时,之前单击的单选按钮的背景颜色将反映在“活动”中。 例如:

enter image description here

点击红色后,我将背景颜色设为蓝色。

那么,我该如何解决这个问题呢。我希望在选中单选按钮后立即更改背景颜色。

MainActivity.java文件是:

package com.aupadhyay.assignment2;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {

    RadioGroup radioGroup;
    RadioButton redRadioButton, greenRadioButton, blueRadioButton;
    LinearLayout linearLayout;

    public void initLinearLayout()
    {
        linearLayout = (LinearLayout) findViewById(R.id.linearLayout1);
    }

    public void initRadioGroup()
    {
        radioGroup = (RadioGroup) findViewById(R.id.radioGroup);

        redRadioButton = (RadioButton) findViewById(R.id.redRadioButton);
        greenRadioButton = (RadioButton) findViewById(R.id.greenRadioButton);
        blueRadioButton = (RadioButton) findViewById(R.id.blueRadioButton);

        redRadioButton.setOnCheckedChangeListener(this);
        greenRadioButton.setOnCheckedChangeListener(this);
        blueRadioButton.setOnCheckedChangeListener(this);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initRadioGroup();
        initLinearLayout();
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

        switch (buttonView.getId())
        {
            case R.id.redRadioButton:
                linearLayout.setBackgroundColor(Color.RED);
                break;
            case R.id.greenRadioButton:
                linearLayout.setBackgroundColor(Color.GREEN);
                break;
            case R.id.blueRadioButton:
                linearLayout.setBackgroundColor(Color.BLUE);
                break;
        }

    }
}

activity_main.xml文件是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/linearLayout1"
    android:padding="10dp"
    android:orientation="vertical">

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/radioGroup">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/redRadioButton"
            android:text="Red"
            android:layout_weight="1"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/greenRadioButton"
            android:text="Green"
            android:layout_weight="1"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/blueRadioButton"
            android:text="Blue"
            android:layout_weight="1"/>

    </RadioGroup>

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

尝试使用WHERE t1.Id < t2.Id 代替setOnClickListener

setOnCheckedChangeListener