Android 按钮颜色赢了';修改背景色后不会改变

Android 按钮颜色赢了';修改背景色后不会改变,android,android-layout,android-button,Android,Android Layout,Android Button,我正在构建我的第一个Android应用程序,它模仿默认的iOS/OSX计算器应用程序 当前的布局如下所示 在我的布局中,我已经修改了数字键的背景,但现在当它们被单击时,背景颜色不会像默认行为那样变为深灰色。这是我需要添加到@drawable资源中的内容吗?还有,是否需要修改布局,使其填充设备屏幕,而不是在底部留下空白 fragment\u main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/an

我正在构建我的第一个Android应用程序,它模仿默认的iOS/OSX计算器应用程序

当前的布局如下所示

在我的布局中,我已经修改了数字键的背景,但现在当它们被单击时,背景颜色不会像默认行为那样变为深灰色。这是我需要添加到
@drawable
资源中的内容吗?还有,是否需要修改布局,使其填充设备屏幕,而不是在底部留下空白

fragment\u main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity$CalculatorFragment"
    android:orientation="vertical"
    android:background="#ffd3d3d3"
    android:weightSum="1">


    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/zero"
        android:id="@+id/textView"
        android:fontFamily="helvetica"
        android:textSize="65sp"
        android:textAlignment="gravity"
        android:gravity="end"
        android:textColor="#FFFFFF"
        android:background="#545454"
        android:layout_weight="0.15" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:columnCount="4"
        android:rowCount="4">

        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:fontFamily="helvetica"
            android:text="@string/AC"
            android:id="@+id/AC"
            android:layout_weight="0.25"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp" />
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/plusminus"
            android:fontFamily="helvetica"
            android:id="@+id/plusminus"
            android:layout_weight="0.25"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/percent"
            android:fontFamily="helvetica"
            android:id="@+id/percent"
            android:layout_weight="0.25"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/div"
            android:fontFamily="helvetica"
            android:id="@+id/div"
            android:layout_weight="0.25"
            android:background="#FF9900"
            android:textColor="#FFFFFF"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/nine"
            android:id="@+id/nine"
            android:layout_weight="0.25"
            android:background="#e5e5e5"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/eight"
            android:id="@+id/eight"
            android:layout_weight="0.25"
            android:background="#e5e5e5"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/seven"
            android:id="@+id/seven"
            android:layout_weight="0.25"
            android:background="#e5e5e5"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:id="@+id/mult"
            android:text="@string/mult"
            android:layout_weight="0.25"
            android:background="#FF9900"
            android:textColor="#FFFFFF"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/six"
            android:id="@+id/six"
            android:layout_weight="0.25"
            android:background="#e5e5e5"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/five"
            android:id="@+id/five"
            android:layout_weight="0.25"
            android:background="#e5e5e5"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/four"
            android:id="@+id/four"
            android:layout_weight="0.25"
            android:fontFamily="helvetica"
            android:background="#e5e5e5"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/minus"
            android:id="@+id/minus"
            android:layout_weight="0.25"
            android:background="#FF9900"
            android:textColor="#FFFFFF"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/three"
            android:id="@+id/three"
            android:layout_weight="0.25"
            android:background="#e5e5e5"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/two"
            android:id="@+id/two"
            android:layout_weight="0.25"
            android:background="#e5e5e5"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/one"
            android:id="@+id/one"
            android:layout_weight="0.25"
            android:background="#e5e5e5"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/plus"
            android:id="@+id/plus"
            android:layout_weight="0.25"
            android:background="#FF9900"
            android:fontFamily="helvetica"
            android:textColor="#FFFFFF"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:layout_weight="0.5"
            android:text="@string/zero"
            android:id="@+id/zero"
            android:background="#e5e5e5"
            android:fontFamily="helvetica"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/dec"
            android:id="@+id/dec"
            android:layout_weight="0.25"
            android:fontFamily="helvetica"
            android:background="#e5e5e5"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
        <Button
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:text="@string/equal"
            android:id="@+id/equal"
            android:layout_weight="0.25"
            android:background="#FF9900"
            android:fontFamily="helvetica"
            android:textColor="#FFFFFF"
            style="?android:attr/borderlessButtonStyle"
            android:textSize="30sp"/>
    </LinearLayout>
</LinearLayout>

使用填充选项并更改relatvilayout

<Relativelayout xmlns:android="http://schemas.android.com/apk/res  /android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity$CalculatorFragment"
android:orientation="vertical"
android:background="#ffd3d3d3"
android:weightSum="1">


<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/zero"
    android:id="@+id/textView"
    android:fontFamily="helvetica"
    android:textSize="65sp"
    android:textAlignment="gravity"
    android:gravity="end"
    android:textColor="#FFFFFF"
    android:background="#545454"
    android:layout_weight="0.15" />
 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:columnCount="4"
    android:rowCount="4"
    android:padding ="5dp">

    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:fontFamily="helvetica"
        android:text="@string/AC"
        android:id="@+id/AC"
        android:layout_weight="0.25"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp" />
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/plusminus"
        android:fontFamily="helvetica"
        android:id="@+id/plusminus"
        android:layout_weight="0.25"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/percent"
        android:fontFamily="helvetica"
        android:id="@+id/percent"
        android:layout_weight="0.25"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/div"
        android:fontFamily="helvetica"
        android:id="@+id/div"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:textColor="#FFFFFF"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp" />

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding ="5dp">

    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/nine"
        android:id="@+id/nine"
        android:layout_weight="0.25"
        android:background="#e5e5e5"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/eight"
        android:id="@+id/eight"
        android:layout_weight="0.25"
        android:background="#e5e5e5"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/seven"
        android:id="@+id/seven"
        android:layout_weight="0.25"
        android:background="#e5e5e5"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:id="@+id/mult"
        android:text="@string/mult"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:textColor="#FFFFFF"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding ="5dp">

    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/six"
        android:id="@+id/six"
        android:layout_weight="0.25"
        android:background="#e5e5e5"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/five"
        android:id="@+id/five"
        android:layout_weight="0.25"
        android:background="#e5e5e5"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/four"
        android:id="@+id/four"
        android:layout_weight="0.25"
        android:fontFamily="helvetica"
        android:background="#e5e5e5"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/minus"
        android:id="@+id/minus"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:textColor="#FFFFFF"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding ="5dp">

    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/three"
        android:id="@+id/three"
        android:layout_weight="0.25"
        android:background="#e5e5e5"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/two"
        android:id="@+id/two"
        android:layout_weight="0.25"
        android:background="#e5e5e5"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/one"
        android:id="@+id/one"
        android:layout_weight="0.25"
        android:background="#e5e5e5"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/plus"
        android:id="@+id/plus"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:fontFamily="helvetica"
        android:textColor="#FFFFFF"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="0.5"
        android:text="@string/zero"
        android:id="@+id/zero"
        android:background="#e5e5e5"
        android:fontFamily="helvetica"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/dec"
        android:id="@+id/dec"
        android:layout_weight="0.25"
        android:fontFamily="helvetica"
        android:background="#e5e5e5"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="@string/equal"
        android:id="@+id/equal"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:fontFamily="helvetica"
        android:textColor="#FFFFFF"
        style="?android:attr/borderlessButtonStyle"
        android:textSize="30sp"/>
</LinearLayout>


对于按钮按下状态,有许多关于堆栈溢出的文章。这可以是一个开始:


对于布局,请使用“权重和”属性来划分布局。

如果要支持某些特定按钮状态(按下、激活、选择等)的背景更改,则必须使用
选择器,而不是平面颜色值

例如,对于按钮:

<Button
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:text="@string/six"
    android:id="@+id/six"
    android:layout_weight="0.25"
    android:background="#e5e5e5"
    android:fontFamily="helvetica"
    style="?android:attr/borderlessButtonStyle"
    android:textSize="30sp"/>

在本例中,按下按钮时将使用颜色值
#cccccc
,android:layout_weight
是一个无效的参数,使用
RelativeLayout
,我最好还是坚持
线性布局
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#cccccc" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#e5e5e5" />
        </shape>
    </item>
</selector>