我有一个应用程序,并且有一个动态变化的十字线,它应该跟随用户点击的位置。我试图让十字准线移动的是改变十字准线相对于 View 两侧的约束。

这是我的代码。

ConstraintSet set = new ConstraintSet(); 
View layout = findViewById(R.id.crosshair); 
 
set.clone((ConstraintLayout) layout); 
set.clear(R.id.crosshair,ConstraintSet.LEFT); 
set.clear(R.id.crosshair,ConstraintSet.TOP); 
set.connect(R.id.crosshair,ConstraintSet.TOP,R.id.CourseMain,y); 
set.connect(R.id.crosshair,ConstraintSet.LEFT,R.id.CourseMain,x); 
 
set.applyTo((ConstraintLayout) layout); 

不幸的是,我无法将 View 转换到约束,并且在寻找如何获取约束布局时遇到问题。

所以,我真正要问的是。如何从 View 获取 ConstraintLayout 或者如何获取一般的 ConstraintLayout。我也有点迷失在那里。

请您参考如下方法:

如果您使用java在res/layout文件夹中声明一个activity_main:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
        xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:id="@+id/constraintLayoutParent" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        tools:context=".MainActivity"> 
 
</android.support.constraint.ConstraintLayout> 

在此文件中,为约束布局指定的 ID 为 constraintLayoutParent

声明一个 Activity MainActivity.class:

import android.app.Activity; 
import android.os.Bundle; 
import android.support.constraint.ConstraintLayout; 
import android.view.View; 
import android.widget.Toast; 
 
public class MainActivity extends Activity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
 
        final ConstraintLayout mConstraintLayout=findViewById(R.id.constraintLayoutParent); 
 
        mConstraintLayout.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                Toast.makeText(MainActivity.this, "Constraint layout clicked", Toast.LENGTH_SHORT).show(); 
            } 
        }); 
    } 
} 

在 MainActivity.class 中,该行:

最终 ConstraintLayout mConstraintLayout=findViewById(R.id.constraintLayoutParent);

这里的 id 应该与 XML 中使用的相同,即 constraintLayoutParent


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!