我正在构建我的第一个Android应用程序,该应用程序以默认的iOS / OS X计算器应用程序为模型。
目前的布局如下所示
在我的布局中,我修改了数字键的背景,但现在点击它们时,背景颜色不会像默认行为那样变为深灰色。这是我需要添加到@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>
答案 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
对于布局,使用权重和属性来划分布局。