为什么按钮在颜色变化时会改变尺寸

时间:2014-03-04 04:22:25

标签: java android android-layout

我正在编写一个简单的tic tac toe应用程序,它有3个3的按钮阵列,当有人赢了它会改变颜色,但是当颜色改变时它变得更大,你看不到单个按钮?所以我的问题是如何让它们改变颜色,但保持相同的大小?图片不是千言万语。下面的代码是非连续的,首先我将按钮初始化为默认值,然后当我们有获胜按钮的获胜者颜色将改变然后在游戏重置时我将按钮返回到默认状态;请告诉我如何使按钮颜色变为红色而不会超出按钮边界,或者是否有更好的方法来实现整个事物。

button00.setBackgroundResource(android.R.drawable.btn_default);
button00.setBackgroundColor(Color.RED);
button00.setBackgroundResource(android.R.drawable.btn_default);

布局XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

     <Button
        android:id="@+id/Button01"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/Button00"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignBaseline="@+id/Button01"
        android:layout_alignBottom="@+id/Button01"
        android:layout_toRightOf="@+id/Button01"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/Button02"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignBaseline="@+id/Button00"
        android:layout_alignBottom="@+id/Button00"
        android:layout_toRightOf="@+id/Button00"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/Button10"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_below="@+id/Button00"
        android:layout_toLeftOf="@+id/Button00"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/Button11"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignBaseline="@+id/Button10"
        android:layout_alignBottom="@+id/Button10"
        android:layout_toLeftOf="@+id/Button02"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/Button12"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignBaseline="@+id/Button11"
        android:layout_alignBottom="@+id/Button11"
        android:layout_alignLeft="@+id/Button02"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/Button20"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignLeft="@+id/Button10"
        android:layout_below="@+id/Button10"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/Button21"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignBaseline="@+id/Button20"
        android:layout_alignBottom="@+id/Button20"
        android:layout_toLeftOf="@+id/Button12"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/Button22"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignBaseline="@+id/Button21"
        android:layout_alignBottom="@+id/Button21"
        android:layout_alignLeft="@+id/Button12"
        android:text="@string/hello_world" />

         <TextView
            android:id="@+id/testButton"
            android:layout_width="260dp"
            android:layout_height="50dp"
            android:layout_alignLeft="@+id/Button20"
            android:layout_below="@+id/Button20"
            android:text="@string/hello_world" />
     <!-- 
        <Button
            android:id="@+id/resetButton"
            android:layout_width="260dp"
            android:layout_height="90dp"
            android:layout_alignLeft="@+id/testButton"
            android:layout_below="@+id/testButton"
            android:layout_marginTop="25dp"
            android:text="@string/hello_world" /> -->

</RelativeLayout>
  

initial state

     

color change state

3 个答案:

答案 0 :(得分:2)

而不是Button背景颜色,而不是setBackgroundResource()在以下行...

button00.setBackgroundColor(Color.RED);

使用setColorFilter()作为以下行...

button00.getBackground().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY);

因此,您更新的代码将是......

button00.setBackgroundResource(android.R.drawable.btn_default);
button00.getBackground().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY);

答案 1 :(得分:0)

你没有尝试更改背景资源你只改变颜色我认为你在更改背景资源时犯了错误尝试不改变资源...并执行它我希望它能正常工作..

答案 2 :(得分:0)

> button00.setBackgroundResource(android.R.drawable.btn_default);
> button00.setBackgroundColor(Color.RED);
> button00.setBackgroundResource(android.R.drawable.btn_default);

不要使用它 使用 button00.setImageResource(R.drawable.btn_default);