1

我有两种布局,一种用于 API 级别 14 之前的布局,另一种用于之后的布局。我需要在 14 级 API 之前使用切换按钮,在 14 级之后使用切换按钮。

问题是我想在 R.id.button1 中使用相同的 id 或者我是否必须让每个都有不同的 id 并在 Java 代码中检查正在运行的 API 版本所以我通过 id 找到视图适用于 API。如果是这样,我该怎么做,请提供代码示例。谢谢你的时间

这些是 XML 文件

布局-v14

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

    <Switch
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView1"
        android:layout_alignBottom="@+id/textView1"
        android:layout_alignParentRight="true"
        android:layout_marginRight="16dp" />

</RelativeLayout>

普通布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

    <ToggleButton
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView1"
        android:layout_alignBottom="@+id/textView1"
        android:layout_alignParentRight="true"
        android:layout_marginRight="16dp" />

</RelativeLayout>

Java 代码

CompoundButton button = (CompoundButton) findViewById(R.id.button1);
4

2 回答 2

1

它们都扩展了 CompoundButton,因此您可以使用相同的 ID,但是如果您想要相同的代码,则必须将用途限制为 CompoundButton 类。

编辑

CompoundButton button = (CompoundButton) findViewById(R.id.button1);
button.setChecked(checked);
于 2013-02-07T09:54:58.143 回答
1

您可以使用Build.VERSION以编程方式获取 api 级别。

编辑

if(Build.VERSION_CODES.ICE_CREAM_SANDWICH == Build.VERSION.SDK_INT);
    ((Switch)v).switchMethodSpecefic();
于 2013-02-07T10:07:44.650 回答