【发布时间】:2015-10-19 20:11:14
【问题描述】:
我是 android 编程的新手,为了能够为旧的 (android 2.3.3) 设备制作应用程序,我在布局方面有点混乱。我在 android studio 的 GUI 编辑器中搞砸了很多东西,以制作(在我看来)一个非常漂亮的 GUI。我才注意到我正在使用 API 23。这导致我的旧设备 (API 10) 的 GUI 完全混乱,然后我开始更改所有内容,以便它看起来至少与我想要开发的设备一样好为了。
我使用了一个垂直方向的LinearLayout,在里面放了一些TextViews 和一个Chronometer,大结局(我的问题的原因)是一个ToggleButton,它在被点击时改变了颜色。我的 ToggleButton 代码如下所示:
<ToggleButton android:id="@+id/toggleButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="10dip"
android:enabled="true"
android:background="@drawable/toggle_button"
android:button="@android:drawable/ic_btn_speak_now"
android:buttonTint="#FFFFFF"
android:textAllCaps="false"
android:textOn="@string/toggle_on"
android:textOff="@string/toggle_off"
android:textColor="#FFFFFF"
android:gravity="center" />
在这段代码片段中ic_btn_speak_now 是我在系统绘图中找到的一些扬声器图标。另一方面,toggle_button 是我写的,如下所示:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@drawable/toggle_color" />
<corners android:radius="5dip" />
</shape>
toggle_color 看起来像这样:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#669900"
android:state_checked="true" />
<item android:color="#cc0000"
android:state_checked="false" />
</selector>
这导致了这个非常漂亮的按钮,它非常适用于 API 23,但不适用于 API 10。
我已经环顾四周,到处都有其他解决方案和其他原因导致某些事情不起作用。我尝试了多种方法,但没有任何效果。我什至省略了按钮的漂亮形状,希望能够实现变色,但我也没有做到。
我的问题可以这样问:
- 是什么导致我的代码不适用于 API 10?
- 如何让我心爱的按钮适用于 API 10?
感谢您的每一点帮助。
【问题讨论】:
-
如果您使用的是较低版本(尤其是 api 级别 14 以下),您应该使用支持库及其 UI 组件(例如,在 api 10 和 23 上获得类似的结果。
-
@Rithe 在这种情况下我应该寻找什么库?支持选择器的库?支持切换按钮中按钮着色的库?我怎样才能使用这样的图书馆?我有这种感觉我已经无意中使用了这种库,但是我应该如何知道如何使用库等?无论如何感谢您的提示
-
如果您想在所有版本中使用相同的设计,我推荐支持库 v7 (AppCompat),它允许您使用低至 2.1 版的材料设计。欲了解更多信息,请查看此网站:developer.android.com/tools/support-library/features.html#v7
-
@Rithe on this blog 我发现这些库只涵盖了小部件的一个子集,而 togglebutton 原来不属于这个子集......我注定要失败吗?
标签: android android-layout android-2.3-gingerbread