我的作业有问题。我的Android应用程序应该改变我在我的应用程序中的所有布局的背景颜色(顺便说一下我有9个)按一个按钮并通过按另一个按钮更改应用程序中所有按钮的颜色。我不知道如何做到这一点(编辑)除了一个一个地改变它们,我不想要,因为我有6种不同的颜色和很多按钮。
我找到了关于动态更改主题的教程, http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html 但这样我只能同时改变其中一个或两个。
我的清单:
<?xml version="1.0" encoding="utf-8"?>
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" android:enabled="false" android:vmSafeMode="false">
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Call"></activity>
<activity android:name=".City"></activity>
<activity android:name=".Map"></activity>
<activity android:name=".Date"></activity>
<activity android:name=".Color"></activity>
<activity android:name=".Sms"></activity>
<activity android:name=".Developer"></activity>
<activity android:name=".Sms2"></activity>
</application>
请帮忙
答案 0 :(得分:0)
MainActivity.java
package com.mavenmaverick.myapplication;
import android.support.v7.app.ActionBarActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RelativeLayout;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button Red = (Button) findViewById(R.id.buttonred);
final Button Green = (Button) findViewById(R.id.buttongreen);
final Button Yellow = (Button) findViewById(R.id.buttonyellow);
final Button Blue = (Button) findViewById(R.id.buttonblue);
final RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
Red.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
relativeLayout.setBackgroundColor(Color.parseColor("#DC143C"));
Green.setBackgroundColor(Color.RED);
Yellow.setBackgroundColor(Color.RED);
Blue.setBackgroundColor(Color.RED);
}
});
Green.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
relativeLayout.setBackgroundColor(Color.parseColor("#26D840"));
Red.setBackgroundColor(Color.GREEN);
Yellow.setBackgroundColor(Color.GREEN);
Blue.setBackgroundColor(Color.GREEN);
}
});
Yellow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
relativeLayout.setBackgroundColor(Color.parseColor("#FFDB58"));
Green.setBackgroundColor(Color.YELLOW);
Blue.setBackgroundColor(Color.YELLOW);
Red.setBackgroundColor(Color.YELLOW);
}
});
Blue.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
relativeLayout.setBackgroundColor(Color.parseColor("#0047AB"));
Green.setBackgroundColor(Color.BLUE);
Yellow.setBackgroundColor(Color.BLUE);
Red.setBackgroundColor(Color.BLUE);
}
});
}
}
activity_main.xml
<Button
android:id="@+id/buttonyellow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/buttongreen"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:background="#FFDB58"
android:text="All Yellow" />
<Button
android:id="@+id/buttonred"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/buttongreen"
android:layout_alignParentTop="true"
android:layout_marginTop="38dp"
android:background="#DC143C"
android:text="All Red" />
<Button
android:id="@+id/buttongreen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/buttonyellow"
android:layout_below="@+id/buttonred"
android:layout_marginTop="46dp"
android:background="#26D840"
android:text="All Green" />
<Button
android:id="@+id/buttonblue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/buttonyellow"
android:layout_below="@+id/buttonyellow"
android:layout_marginTop="46dp"
android:background="#0047AB"
android:text="All Blue" />
</RelativeLayout>
现在,当您点击任意buttons
时,background-color
和所有buttons
的颜色都会根据button
上的信息发生变化。您可以根据所需的按钮和颜色数量,通过适当的编辑重复使用代码。
答案 1 :(得分:0)
在放弃这个并逐一尝试后,我遇到了另一个问题。这里解释并回答了Change layout background color on button click
找到的解决方案似乎是逐一方法之间的一种好方法(因为无法编辑与单个活动中的其他活动相关联的布局属性,因此无法工作)以及我在此尝试实现的目标。
这不是很时髦,因为按钮变成了一个彩色矩形,但现在对我来说已经足够了。
感谢您的帮助!