1

API レベル 14 より前のレイアウトと、その後のレイアウトの 2 つのレイアウトがあります。レベル 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

Build.VERSIONを使用して、プログラムでAPIレベルを取得できます。

編集

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

Both of them extends CompoundButton, so you can use the same ID, but if you want the same code, you have to limit your useness to CompoundButton class.

Edit

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