此问题不会出现在常规布局的XML文件中,但会出现在PreferenceScreen XML文件中。这是预期的行为吗?当我定义一个自定义视图并将其直接添加到PreferenceScreen(它的XML文件(时,该自定义视图的属性没有自动完成或重构功能。
为了澄清我所说的自定义首选项的含义:我使用此方法来实现自定义首选项。
让我们以链接中的示例为例。我想做的是拥有自动完成的所有好处(例如IntelliSense(。假设我想创建一个我定义/创建的自定义SeekBar,但不是手动键入包名和类名,而是按CTRL+SPACE调出自动完成列表。但它没有出现!
假设我希望这是我的最后一个PreferenceScreen xml:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<com.example.SeekbarPreference
android:key="pref_volume"
android:title="@string/volume" />
</PreferenceScreen>
我想CTRL+SPACE自动完成我的自定义首选项:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<com.ex
</PreferenceScreen>
但它不起作用!它确实适用于由活动膨胀的常规布局文件下的自定义视图。但如果是PreferenceScreen,我必须全部输入,但我很容易出错。
此外,我想重构自定义Preference的属性引用的资源。假设我进入我的";字符串.xml";资源文件和更改"@字符串/体积";至"@string/volume_label";
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<com.example.SeekbarPreference
android:key="pref_volume"
android:title="@string/volume" />
</PreferenceScreen>
当我在我的";字符串.xml";文件,如果我右键单击并重构";"体积";至";volume_label";,这些资源在整个项目中被重命名,包括布局中的xml文件和java类文件。然而@字符串/体积";在PreferenceScreen的文件中保持不变。当我编译并安装该应用程序时,我从Android Studio收到一个错误,字符串资源调用";"体积";不存在。
如果我在PreferenceScreen的XML文件中,如果我右键单击:android:title="字符串/体积">,重构程序>缺少重命名按钮。
我解决了它。
该问题是由为自定义Preference类指定的访问修饰符引起的。
如果你想重构并为你的自定义偏好设置启用自动完成功能,安卓工作室仍然需要访问该类。
以下是如果自动完成和重构不起作用的情况:
class MySeekBarPreference extends SeekBarPreference {
// Autocomplete and refactoring DISABLED in Android Studio
}
如果你想让自动完成和重构工作,下面是它需要的样子:
public class MySeekBarPreference extends SeekBarPreference {
// Autocomplete and refactoring ENABLED in Android Studio
}
考虑到这些新信息,我不认为最初的问题与它是由于首选屏幕还是常规的膨胀布局有关。我在常规布局中工作的其他自定义视图是公共的,但我在PreferenceScreen中的自定义首选项不是公共的。