Android 如何相对于复选框的图像背景移动复选框?(安卓)

Android 如何相对于复选框的图像背景移动复选框?(安卓),android,checkbox,Android,Checkbox,我正在使用以下代码行为复选框设置背景图像: checkBox.setBackgroundResource(R.drawable.myImage); 但是,复选框会自动定位到背景图像的左中。我希望复选框位于背景图像的右下角。我怎样才能做到这一点?谢谢 您可以使用此选项对齐页面右下角的复选框 <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content

我正在使用以下代码行为复选框设置背景图像:

 checkBox.setBackgroundResource(R.drawable.myImage);

但是,复选框会自动定位到背景图像的左中。我希望复选框位于背景图像的右下角。我怎样才能做到这一点?谢谢

您可以使用此选项对齐页面右下角的复选框

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <ImageView
            android:src="@drawable/myImage"
            android:layout_width="match_parent"
            android:layout_height="200dp" />
        <CheckBox
            android:text="CheckBox"
            android:layout_gravity="right|bottom"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/checkBox1" />
    </FrameLayout>

如果父布局是相对的,请使用以下代码:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
checkbox.setLayoutParams(params);
就这样:

对于LinearLayout,它将是:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
params.gravity = Gravity.RIGHT | Gravity.BOTTOM;
checkbox.setLayoutParams(params);
更新

实际上,要使其在自己的空间内对齐,只需执行以下操作:checkbox.setGravityGravity.RIGHT | Gravity.BOTTOM

重要提示


只有当您的复选框宽度和高度不是包装内容时,才可以这样做!另一种方式是它不会移动到任何地方。因此,您应该不断地指定宽度和高度,例如30dp,但我不建议您这样做。

您使用哪种布局?它目前是一种相对的布局。布局可以根据需要进行更改。我最初考虑将背景图像与复选框分离,使其成为imageView,然后手动将复选框置于右下角。这需要我硬编码复选框和ImageView之间的链接,我不希望这样做。谢谢你的回答。你知道为什么我使用重力时复选框不会与背景图像的右侧对齐吗?Gravity.BOTTOM有效,但Gravity.RIGHT无效。我已经检查过了,它对我有效,只需确保宽度和高度不是包裹内容,并提前留出移动空间,比如尝试将宽度设置为30dp,以便进行测试。