Lucy
Lucy

Reputation: 121

move Constraint Layout programmatically

I want to move a ConstraintLayout programmatically. I looked through some solutions on stack overflow but they didn't work for me.

There are two ConstraintLayouts placed vertically. When the code goes into else if("android.permission.CAMERA" in permissionList.toString(), the above constraint layout (layoutLocation) will be invisible and the below constraint layout (layoutCamera) will come up and take its position. I mark where I should use declare it with 'want to use here'.

Code (apology to not ba able to post the whole code due to patent reason)

class SplashFragment : Fragment() {

private lateinit var mContext: MainActivity

private lateinit var binding : FragmentSplashBinding
private val viewModel : SplashViewModel by inject()
private val getPermissionUseCase : GetPermissionUseCase by inject()

override fun onAttach(context: Context) {
    super.onAttach(context)
    mContext = context as MainActivity
}

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
    binding = DataBindingUtil.inflate(inflater, R.layout.fragment_splash, container, false)
    return binding.root
}


override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    binding.viewModel = viewModel
    binding.lifecycleOwner = viewLifecycleOwner

}




private fun actionApplicationSetting(permissionList : List<String>) {
    val layoutInflater = LayoutInflater.from(context)
    val view = layoutInflater.inflate(R.layout.dialog_splash, null)
    val alertDialog = AlertDialog.Builder(requireContext(), R.style.CustomAlertDialog).setView(view).create()
    val layoutLocation : ConstraintLayout = view.findViewById(R.id.layout_box_location)
    val layoutCamera : ConstraintLayout = view.findViewById(R.id.layout_box_camera)
    
    for(permission in permissionList) {
        if("android.permission.CAMERA" in permissionList.toString() && "android.permission.ACCESS_COARSE_LOCATION" in permissionList.toString()) {
            layoutLocation.background = AppCompatResources.getDrawable(mContext, R.drawable.auth_level_blue)
            layoutCamera.background = AppCompatResources.getDrawable(mContext, R.drawable.auth_level_blue)
        }else if("android.permission.ACCESS_COARSE_LOCATION" in permissionList.toString()) {
            layoutLocation.background = AppCompatResources.getDrawable(mContext, R.drawable.auth_level_blue)
        }else if("android.permission.CAMERA" in permissionList.toString()) {
            layoutLocation.visibility = View.INVISIBLE
            // want to use here
        }
    }
    alertDialog.show()

}

}

XML

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/layout_main"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_marginStart="70dp"
        android:layout_marginBottom="10dp"
        app:layout_constraintBottom_toBottomOf="@+id/layout_wrapper"
        app:layout_constraintEnd_toEndOf="@+id/layout_wrapper"
        app:layout_constraintStart_toStartOf="@+id/layout_wrapper">
    </androidx.constraintlayout.widget.ConstraintLayout>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/layout_wrapper"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/layout_box_location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"       
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/layout_box_camera"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/layout_box_location" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

Upvotes: 1

Views: 833

Answers (1)

Taranmeet Singh
Taranmeet Singh

Reputation: 1239

Instead of layoutLocation.visibility = View.INVISIBLE try layoutLocation.visibility = View.GONE

Upvotes: 3

Related Questions