修改背景颜色后,按钮颜色不会改变

时间:2015-03-18 10:29:43

标签: android android-layout android-button

我正在构建我的第一个Android应用程序,该应用程序以默认的iOS / OS X计算器应用程序为模型。 iOS calculator

目前的布局如下所示

enter image description here

在我的布局中,我修改了数字键的背景,但现在点击它们时,背景颜色不会像默认行为那样变为深灰色。这是我需要添加到@drawable资源的东西吗?无论如何都要修改布局,以便填充设备屏幕而不在底部留下空白区域?

fragment_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>

3 个答案:

答案 0 :(得分:1)

使用填充选项并更改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>

答案 1 :(得分:1)

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

例如对于按钮:

<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"/>

而不是使用android:background="#e5e5e5",您应该使用android:background="@drawable/selector_grey"并将以下代码作为文件添加到drawable文件夹中:

selector_grey.xml

<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>

在此示例中,按下按钮时将使用颜色值#cccccc

答案 2 :(得分:0)

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

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