工具的真正目的是什么:Android XML中的上下文

5 xml android

我正在学习android并想知道为什么我tools:context在布局XML文件中找不到属性的真正目的.

我在这里阅读https://developer.android.com/studio/write/tool-attributes.html#toolscontextonClick我们指定之前不适用于任何视图的图像下tools:context.

我试过并想知道它没有任何工作tools:context 我也从stackoverflow读取它用于为布局选择适当的主题.但它没有使用它对我来说工作正常,这是tools:context什么的真正目的?

XML布局:

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="CallIt"
        />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

主要活动:

package com.something.testingwith42;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void CallIt(View view){
        Toast.makeText(this, "Checking", Toast.LENGTH_LONG).show();
    }
}
Run Code Online (Sandbox Code Playgroud)

没有,一切都很好 tools:context

Com*_*are 10

在我们指定工具:context之前,onClick不适用于任何View

该文件中没有任何内容可以说明这一说法.

没有工具,一切都很好:上下文

正确.那是因为那个文档中没有任何内容表明onClick()只有你这样做才有效tools:context.它确实说,对于快速修复,您需要tools:context工具来知道添加onClick()方法的位置.

还从stackoverflow中读取它用于为布局选择适当的主题

这也是不正确的.

工具的真正目的是什么:Android XML中的上下文

它提供了开发工具的上下文,以及将使用此布局的位置,以便工具可以为开发人员提供更好的帮助,例如:

  • 更准确地呈现预览,考虑托管活动及其主题
  • 更智能的助手,例如前面提到的快速修复

tools:context是完全可选的.开发工具可以在没有它的情况下工作.这些工具可能会为您提供一些降级的帮助,但这是您的选择.

tools:context- 或tools命名空间中的任何属性- 在运行时不会产生任何影响.我没有检查过,但我希望在打包APK时它们甚至会被剥离,因为它们在运行时没用.