如何在对话框的右上角放置关闭图像视图?

时间:2015-01-21 08:18:53

标签: android dialog imageview android-linearlayout

enter image description here

我正在尝试在右上角放置一个带有近距离图像的imageview,略微在外边缘。这是我对话框的布局:

<?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();

我已经浏览了stackoverflow上的所有可用帖子,但没有一个能够解决我的问题。请帮我。提前谢谢。

通过使用android:layout_marginTop =&#34; -15dp&#34;,我得到这个输出: enter image description here

5 个答案:

答案 0 :(得分:2)

您可以使用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>

希望它有助于ツ

答案 1 :(得分:2)

这不会起作用..对话框中的视图将保留在对话框内,如果您试图以负值拉出徽标,在视图之外,它将消失掉观点。

答案 2 :(得分:1)

<?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。

编辑:

确保您的顶部布局还有background =“#android:color / transparent”。然后使用另一个LinearLayout,其背景为其余内容。

这应该可以解决问题。用您自己的@drawables替换背景等。但我用白色背景测试它,它是所需的输出。

我的输出图片:

enter image description here

答案 3 :(得分:1)

<?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>

尝试使用它enter image description here

答案 4 :(得分:0)

拳头,定义样式

`<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" />`