如果我在Android中自定义布局,如何知道每个小部件的ID?

时间:2017-08-25 05:18:59

标签: android android-layout

某些默认小部件的布局可能不适合我,所以我使用自定义布局

例如,我使用SwitchPreference

的自定义布局
<SwitchPreference
    android:key="pre_key"
    android:title="this is title"
    android:switchTextOff=" "
    android:switchTextOn=" "
    android:layout="@layout/switch_preference"
    android:defaultValue="true" />

这是switch_preference.xml

<?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">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@android:id/title"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        />
    <Switch
        android:id="@+id/switch_widget"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true" />
</RelativeLayout>

在这个例子中,标题是有效的,它可以显示正确的标题

但Switch无法正常工作,无法更改和恢复首选项值

如果使用自定义布局,如何找到窗口小部件ID?

更新问题:

我尝试使用android:id="@android:id/switch_widget",它会提示消息requires API level 24,我忽略此消息并运行应用,结果无效。

然后我将minSdkVersion更改为24,并在其他设备(7.0)上运行该应用程序,这次一切正常。

但我的应用需要支持19,所以我将Switch更改为android.support.v7.widget.SwitchCompat并尝试android:id="@+id/switchWidget",然后在Android 5.0.1上安装该应用,这次它不是再次工作。

API 24之前是否有任何ID可以正常工作?应该在API 14中添加SwitchPreference,为什么id在19中不起作用?

1 个答案:

答案 0 :(得分:0)

交换机的id是git status #make sure both the .gitmodules and sm (repo2 name) are staged (changes to be committed) git commit -m 'commit for .gitmodules and sm (repo2 name)' git push -f #force push 使用它,它将由android自动获取。

android:id="@+id/switchWidget"