Android:是否可以创建空心(空心)布局?

Sha*_*ien 0 layout android

对不起,如果我的话题令人讨厌,我不确定用哪个词来描述我需要的布局.

目前我正在开发一个项目,需要在mapview上覆盖一个空心布局,空心布局将用于显示远距离定位点,我发布图像来演示我的意思.

Mapview与storke叠加

基本上整个屏幕由Mapview填充,叠加布局应覆盖它而不覆盖中心,就像我在图像中显示的那样.

这是xml显示我做了如上所述的布局

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<com.google.android.maps.MapView
android:id="@+id/MapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="..."
/>

   <View
   android:layout_width="320dip"
   android:layout_height="50dip"
   android:layout_gravity="center_horizontal|top"
   android:background="#800ff4ff"
   android:textColor="#ffffffff" />


 <View
    android:layout_width="320dip"
    android:layout_height="50dip"
    android:layout_gravity="center_horizontal|bottom"
    android:background="#800ff4ff"
    android:textColor="#ffffffff"
  />

<View
    android:layout_width="50dip"
    android:layout_height="520dip"
    android:layout_gravity="center_vertical|right"
    android:background="#800ff4ff"
    android:textColor="#ffffffff" />

 <View
    android:layout_width="50dip"
    android:layout_height="520dip"
    android:layout_gravity="center_vertical|left"
    android:padding="20dip"
    android:background="#800ff4ff"
    android:textColor="#ffffffff" />

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

我使用framelayout来允许布局覆盖其他布局,并在每个边缘创建4个sepreate来模拟我真正想要的东西(空心).我只是不确定是谁让布局只显示4边并保持中心隐形,如果任何人可以帮助请给我一些指导.谢谢.

sro*_*mku 6

您可以使用另一个符合要求的简单选项.

  • 创建具有已定义形状的新drawable资源.调用此资源(XML文件):margin_border.xml并将其放在drawable文件夹下.这个XML的内容:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle" >
    
        <stroke
            android:width="50dp"
            android:color="#800ff4ff" />
    
        <solid android:color="#00000000" />
    
    </shape> 
    
    Run Code Online (Sandbox Code Playgroud)

    说明: 此形状将充当内部布局的边框/框架.作为边框的'stroke'属性可以是您想要的任何颜色,'solid'属性具有透明颜色.

  • 然后在主布局中使用此形状:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <com.google.android.maps.MapView
            android:id="@+id/MapView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:apiKey="..."
            android:clickable="true"
            android:enabled="true" />
    
        <!-- Set hollow layout -->
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:background="@drawable/margin_border"
            android:padding="50dp" >
        </LinearLayout>
    
    </RelativeLayout>
    
    Run Code Online (Sandbox Code Playgroud)

    说明: 主要布局是RelativeLayout.MapView没有改变,除了对齐所有方向的alignParent标志,如此处所示设置为true.

    最后使用您想要的任何布局为中心.我使用LinearLayout,而背景引用了drawable形状.

    注意:此布局的填充必须与形状中的笔触宽度相同.在这种情况下,它是50dp

这是它在我的手机上的样子(截图):

在此输入图像描述