适用于较旧设备的Android布局
我在android编程方面是全新的,为了能够为旧的(android 2.3.3)设备生成应用程序,我在布局上进行了一些修改。我在Android工作室的GUI编辑器中混淆了很多东西,使得(在我看来)一个非常漂亮的GUI。然后我才注意到我在API 23中工作。这导致我的旧设备(API 10)完全搞砸了GUI,然后我开始改变一切,以至于看起来对于我想开发的设备对于。适用于较旧设备的Android布局
我与垂直方向的LinearLayout
工作,把一些TextView
S和在那里Chronometer
和大结局(我的问题的原因)一个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
工作210我一直在环顾四周,处处都有其他的解决方案和其他原因,为什么某些事情不起作用。我尝试了很多东西,但没有任何结果。我甚至省略了我的按钮的漂亮形状,希望能够实现颜色变化,但我也没有设法做到这一点。
我的问题因此可以提如下:
- 是什么让我的代码不会对API 10工作?
- 我怎样才能让我心爱的按钮适用于API 10?
每一位的帮助表示赞赏。
我不知道为什么我的代码无法正常工作,但我设法通过以编程方式更改形状来轻松解决此问题。所以我在res/drawable
文件夹中了2种形状(每种颜色一个),如下所示:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#cc0000" />
<corners android:radius="5dip" />
</shape>
这将被red_toggle.xml
和我做了另一种颜色,使green_toggle.xml
相同。我ToggleButton
被修改调用onToggle()
方法单击时,并最终看起来像:
<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:onClick="onToggle"
android:padding="15dp"
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" />
在我Activity
,我再有这样的方法onToggle()
其执行以下操作:
public void onToggle(View view) {
//only togglebutton should be calling this method
if(((ToggleButton) view).isChecked()) {
toggle.setBackgroundResource(R.drawable.red_toggle);
} else {
toggle.setBackgroundResource(R.drawable.green_toggle);
}
}
而且实际上所有我需要...
如果您使用的是较低版本(尤其是api级别14以下),则应使用支持库及其UI组件(例如,在api 10和23上获得类似的结果。 – Rich
@Rithe然后我应该查找哪些库在这种情况下?一个支持选择器的库?一个支持按钮在一个切换按钮中着色的库?我该如何使用这样一个库?我有这种感觉,我已经无意中使用了这样的库,但我应该怎么知道如何使用库等?谢谢在任何情况下的暗示 –
如果你想在所有版本中有相同的设计我推荐支持库v7(AppCompat),它允许你使用材料设计到版本2.1。有关更多信息,请参阅本网站:https://developer.android.com/tools/support-library/features.html#v7 – Rich