如何将关闭的图像视图放在对话框的右上角并带有边距?
How to put close imageview at top right corner with margin in a dialog?
我正在尝试将具有接近图像的图像视图放在右上角,边缘略微偏外。这是我的对话框布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/acl_data_info_bg_round"
android:orientation="vertical" >
<ImageView
android:id="@+id/close_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:adjustViewBounds="true"
android:paddingTop="-50dp"
android:scaleType="fitStart"
android:background="@drawable/freeg_logo"
android:description="@null" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingRight="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Consumed: 0.5 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Limit: 10 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<Button
android:id="@+id/button_hide_alertDialog"
android:layout_width="60.0dip"
android:layout_height="35.0dip"
android:layout_gravity="center_horizontal"
android:layout_marginTop="35.0dip"
android:text="OK"
android:textSize="15.0dip"
android:textStyle="bold" />
<Button
android:id="@+id/textview_powered_by"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25.0dip"
android:background="@android:color/transparent"
android:drawablePadding="5.0dip"
android:drawableRight="@drawable/freeg_logo_acl_data_info"
android:text="Powered by"
android:textColor="#6d7780"
android:textSize="10.0dip" />
</LinearLayout>
这是我对其进行充气的代码:
alertDialog = new Dialog(context);
alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater inflater;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View convertView = inflater.inflate(R.layout.acl_data_info_screen, null, false);
Button button_hide_alertDialog = (Button) convertView
.findViewById(R.id.button_hide_alertDialog);
button_hide_alertDialog.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if(alertDialog != null && alertDialog.isShowing())
alertDialog.dismiss();
}
});
alertDialog.setContentView(convertView);
// show it
alertDialog.show();
我浏览了 Whosebug 上的所有可用帖子,但其中 none 能够解决我的问题。请帮我。提前致谢。
通过使用 android:layout_marginTop="-15dp",我得到了这个输出:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:orientation="vertical">
<ImageView
android:id="@+id/close_dialog"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="top|right"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:adjustViewBounds="true"
android:background="@android:color/white"
android:description="@null"
android:scaleType="fitStart" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/white">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingRight="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Consumed: 0.5 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Limit: 10 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<Button
android:id="@+id/button_hide_alertDialog"
android:layout_width="60.0dip"
android:layout_height="35.0dip"
android:layout_gravity="center_horizontal"
android:layout_marginTop="35.0dip"
android:text="OK"
android:textSize="15.0dip"
android:textStyle="bold" />
<Button
android:id="@+id/textview_powered_by"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25.0dip"
android:background="@android:color/transparent"
android:drawablePadding="5.0dip"
android:text="Powered by"
android:textColor="#6d7780"
android:textSize="10.0dip" />
</LinearLayout>
</LinearLayout>
只需在您的 ImageView 周围添加此 LinearLayout。所以不要删除任何东西,只需添加 LinearLayout。
编辑:
确保您的顶部布局也有背景="#android:color/transparent"。然后为其余内容使用另一个带背景的 LinearLayout。
这应该可以解决问题。将背景等替换为您自己的@drawables。但是我用白色背景测试了一下,是想要的输出。
我的输出图片:
您可以使用 FrameLayout。
试试这个 xml :
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/background_dark"
android:orientation="vertical" >
<!-- You Linear layout will go hewre without the close button -->
</LinearLayout>
<ImageView
android:id="@+id/close_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:background="@drawable/ic_launcher"
android:description="@null"
android:layout_gravity="top|right"
android:layout_marginTop="-20dp"
android:scaleType="fitStart" />
</FrameLayout>
希望对你有帮助ツ
这行不通..对话框内的视图将保留在对话框内,如果您尝试使用负值将徽标拉出视图,它将从视图中消失。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="25dp"
android:layout_marginBottom="35dp"
android:background="@drawable/acl_data_info_bg_round"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingRight="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Consumed: 0.5 MB"
android:textColor="#6d7780"
android:textSize="18.0dip"
android:visibility="invisible"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingRight="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Consumed: 0.5 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Limit: 10 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<Button
android:id="@+id/button_hide_alertDialog"
android:layout_width="60.0dip"
android:layout_height="35.0dip"
android:layout_gravity="center_horizontal"
android:layout_marginTop="35.0dip"
android:text="OK"
android:textSize="15.0dip"
android:textStyle="bold" />
<Button
android:id="@+id/textview_powered_by"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25.0dip"
android:background="@android:color/transparent"
android:drawablePadding="5.0dip"
android:drawableRight="@drawable/freeg_logo_acl_data_info"
android:text="Powered by"
android:textColor="#6d7780"
android:textSize="10.0dip" />
</LinearLayout>
<ImageView
android:id="@+id/close_dialog"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_gravity="top|right"
android:adjustViewBounds="true"
android:background="@drawable/icon"
android:description="@null"
android:scaleType="fitStart" />
</RelativeLayout>
尝试一下它的工作
首先,定义一个样式
`<style name="deleteIcon">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginStart">-40dp</item>
<item name="android:layout_marginTop">3dp</item>
<item name="srcCompat">@drawable/ic_delete_icon</item>
</style>`
其次,在您的 LinearLayout 中使用此样式
`<ImageView sytle="@style/deleteIcon" />`
我正在尝试将具有接近图像的图像视图放在右上角,边缘略微偏外。这是我的对话框布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/acl_data_info_bg_round"
android:orientation="vertical" >
<ImageView
android:id="@+id/close_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:adjustViewBounds="true"
android:paddingTop="-50dp"
android:scaleType="fitStart"
android:background="@drawable/freeg_logo"
android:description="@null" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingRight="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Consumed: 0.5 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Limit: 10 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<Button
android:id="@+id/button_hide_alertDialog"
android:layout_width="60.0dip"
android:layout_height="35.0dip"
android:layout_gravity="center_horizontal"
android:layout_marginTop="35.0dip"
android:text="OK"
android:textSize="15.0dip"
android:textStyle="bold" />
<Button
android:id="@+id/textview_powered_by"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25.0dip"
android:background="@android:color/transparent"
android:drawablePadding="5.0dip"
android:drawableRight="@drawable/freeg_logo_acl_data_info"
android:text="Powered by"
android:textColor="#6d7780"
android:textSize="10.0dip" />
</LinearLayout>
这是我对其进行充气的代码:
alertDialog = new Dialog(context);
alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater inflater;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View convertView = inflater.inflate(R.layout.acl_data_info_screen, null, false);
Button button_hide_alertDialog = (Button) convertView
.findViewById(R.id.button_hide_alertDialog);
button_hide_alertDialog.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if(alertDialog != null && alertDialog.isShowing())
alertDialog.dismiss();
}
});
alertDialog.setContentView(convertView);
// show it
alertDialog.show();
我浏览了 Whosebug 上的所有可用帖子,但其中 none 能够解决我的问题。请帮我。提前致谢。
通过使用 android:layout_marginTop="-15dp",我得到了这个输出:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:orientation="vertical">
<ImageView
android:id="@+id/close_dialog"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="top|right"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:adjustViewBounds="true"
android:background="@android:color/white"
android:description="@null"
android:scaleType="fitStart" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/white">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingRight="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Consumed: 0.5 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Limit: 10 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<Button
android:id="@+id/button_hide_alertDialog"
android:layout_width="60.0dip"
android:layout_height="35.0dip"
android:layout_gravity="center_horizontal"
android:layout_marginTop="35.0dip"
android:text="OK"
android:textSize="15.0dip"
android:textStyle="bold" />
<Button
android:id="@+id/textview_powered_by"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25.0dip"
android:background="@android:color/transparent"
android:drawablePadding="5.0dip"
android:text="Powered by"
android:textColor="#6d7780"
android:textSize="10.0dip" />
</LinearLayout>
</LinearLayout>
只需在您的 ImageView 周围添加此 LinearLayout。所以不要删除任何东西,只需添加 LinearLayout。
编辑:
确保您的顶部布局也有背景="#android:color/transparent"。然后为其余内容使用另一个带背景的 LinearLayout。
这应该可以解决问题。将背景等替换为您自己的@drawables。但是我用白色背景测试了一下,是想要的输出。
我的输出图片:
您可以使用 FrameLayout。
试试这个 xml :
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/background_dark"
android:orientation="vertical" >
<!-- You Linear layout will go hewre without the close button -->
</LinearLayout>
<ImageView
android:id="@+id/close_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:background="@drawable/ic_launcher"
android:description="@null"
android:layout_gravity="top|right"
android:layout_marginTop="-20dp"
android:scaleType="fitStart" />
</FrameLayout>
希望对你有帮助ツ
这行不通..对话框内的视图将保留在对话框内,如果您尝试使用负值将徽标拉出视图,它将从视图中消失。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="25dp"
android:layout_marginBottom="35dp"
android:background="@drawable/acl_data_info_bg_round"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingRight="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Consumed: 0.5 MB"
android:textColor="#6d7780"
android:textSize="18.0dip"
android:visibility="invisible"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingRight="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Consumed: 0.5 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="7.0dip"
android:paddingTop="7.0dip"
android:text="Free internet Limit: 10 MB"
android:textColor="#6d7780"
android:textSize="18.0dip" />
<Button
android:id="@+id/button_hide_alertDialog"
android:layout_width="60.0dip"
android:layout_height="35.0dip"
android:layout_gravity="center_horizontal"
android:layout_marginTop="35.0dip"
android:text="OK"
android:textSize="15.0dip"
android:textStyle="bold" />
<Button
android:id="@+id/textview_powered_by"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25.0dip"
android:background="@android:color/transparent"
android:drawablePadding="5.0dip"
android:drawableRight="@drawable/freeg_logo_acl_data_info"
android:text="Powered by"
android:textColor="#6d7780"
android:textSize="10.0dip" />
</LinearLayout>
<ImageView
android:id="@+id/close_dialog"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_gravity="top|right"
android:adjustViewBounds="true"
android:background="@drawable/icon"
android:description="@null"
android:scaleType="fitStart" />
</RelativeLayout>
尝试一下它的工作
首先,定义一个样式
`<style name="deleteIcon">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginStart">-40dp</item>
<item name="android:layout_marginTop">3dp</item>
<item name="srcCompat">@drawable/ic_delete_icon</item>
</style>`
其次,在您的 LinearLayout 中使用此样式
`<ImageView sytle="@style/deleteIcon" />`