改变布局颜色Android应用程序

时间:2012-10-28 12:23:40

标签: android android-layout layout background

我正在尝试编写一个程序,将屏幕的背景颜色更改为我决定的颜色。 我写了类似的东西但是当它运行时崩溃了 什么是问题,请帮助我。这是xml代码

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <LinearLayout 

        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="bottom"
        android:background="#FFFFFF"


        >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Red"
            />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Green" />

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Blue" />
         <Button
            android:id="@+id/button4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="White" />

    </LinearLayout>

</LinearLayout>

这是.java代码

package com.example.flashlight;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

public class FlashLight extends Activity {

Button red,green,blue,white;
LinearLayout view;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_flash_light);
    red=(Button) findViewById(R.id.button1);
    green=(Button) findViewById(R.id.button2);
    blue=(Button) findViewById(R.id.button3);
    white=(Button) findViewById(R.id.button4);

    red.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

            view.setBackgroundColor(Color.RED);

        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_flash_light, menu);
    return true;
}
}

4 个答案:

答案 0 :(得分:1)

您需要为LinearLayout

指定一个ID
 <LinearLayout 
    android:id="@+id/view"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="bottom"
    android:background="#FFFFFF"

然后初始化您的视图

view = (LinearLayout) findViewById(R.id.view)
red.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
        // TODO Auto-generated method stub

        view.setBackgroundColor(Color.RED);

    }
});

答案 1 :(得分:0)

您没有将view变量分配给任何内容,这可能会导致代码中出现NullPointerException

尝试在LinearLayout

下的此行中添加此行

android:id="@+id/view"

并将此行添加到onCreate

view = (LinearLayout)findViewBiId(R.id.view);

答案 2 :(得分:0)

试试此代码

这对我有用...... 在您的线性布局的youyr xml文件集ID中作为视图。

<LinearLayout 

    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="bottom"
    android:id="@+id/view"
    android:background="#FFFFFF"


    >

在您的java文件中,由于id。

,您的线性布局视图为空

所以把你的java文件放在下面的行

 view  = (LinearLayout) findViewById(R.id.view);

这对我有用....

快乐编码..

答案 3 :(得分:0)

在onClick之后使用以下代码:

view.setBackgroundColor(Color.DKGRAY);

示例:

public void onClick(View v) {
        view.setBackgroundColor(Color.DKGRAY); //Add any color you want
    }