如何创建与 Android 中两个方向的所有设备兼容的可绘制文件?

如何解决如何创建与 Android 中两个方向的所有设备兼容的可绘制文件?

我使用图层列表创建了一个带有工具提示箭头的矩形结构。并将其显示为弹出窗口。但是对于纵向模式下的大型平板电脑,弹出式左右两端正在切割。

结构:

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" 
     android:paddingStart="-10dp">
     <item android:top="20dp" >
            <shape android:shape="rectangle" >
    <corners  android:radius="8dp"/>
                <padding android:top="20dp" android:right="10dp"/>
            </shape>
        </item>
    
        <item android:top="1dp" android:bottom="1dp" >
            <shape android:shape="rectangle">
                <size android:width="206dp" android:height="100dp" />
                <solid android:color="#FFF" />
                <stroke
                    android:width="2dp"
                    android:color="#d9d9d9" />
                <corners android:radius="2dp" />
            </shape>
        </item>
    
        <item
    
            android:width="20dp"
            android:height="20dp"
            android:end="14dp"
            android:gravity="end"
            android:top="-10dp">
    
            <rotate android:fromdegrees="45"
                >
                <shape android:shape="rectangle" >
                    <solid android:color="#d9d9d9" />
                    <stroke
                        android:width="2dp"
                        android:color="#d9d9d9" />
    
                </shape>
            </rotate>
        </item>
    
        <item
            android:width="20dp"
            android:height="20dp"
            android:end="14dp"
            android:gravity="end"
            android:top="-7dp">    //here,-12 + 3 = -9
    
            <rotate
                android:fromdegrees="45">
    
                <shape
                    android:shape="rectangle">
    
                    <solid
                        android:color="@color/white_color" />    
      </shape>
    
            </rotate>
    
        </item>
    
    </layer-list>

popup.xml 就像:

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_marginEnd="10dp"
        android:background="@drawable/shadow_recta">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical">
     <LinearLayout
                android:id="@+id/btn_logout"
                android:layout_width="match_parent"
                android:layout_height="48dp"
                android:layout_marginLeft="2dp"
                android:layout_marginTop="2dp"
                android:layout_marginRight="2dp"
                android:background="#FFFFFF"
                android:clickable="true"
                android:gravity="center_vertical"
                android:orientation="horizontal">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="20dp"
                    android:layout_weight="0.6"
                    android:fontFamily="@font/open_sans"
                    android:text="Log out"
                    android:textColor="#515151"
                    android:textSize="16dp" />
    </LinearLayout>
            <LinearLayout
                android:id="@+id/btn_help"
                android:layout_width="match_parent"
                android:layout_height="48dp"
                android:layout_marginLeft="2dp"
                android:layout_marginTop="2dp"
                android:layout_marginRight="2dp"
                android:background="#FFFFFF"
                android:clickable="true"
                android:gravity="center_vertical"
                android:orientation="horizontal">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="20dp"
                    android:layout_weight="0.6"
                    android:fontFamily="@font/open_sans"
                    android:text="Help"
                    android:textColor="#515151"
                    android:textSize="16dp" />
     </LinearLayout>
            <LinearLayout
                android:id="@+id/txt_report"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:clickable="true"
                android:focusable="true"
                android:orientation="horizontal">
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="48dp"
                    android:layout_marginLeft="20dp"
                    android:layout_weight="1"
                    android:fontFamily="@font/open_sans"
                    android:gravity="center_vertical"
                    android:text="Report an issue"
                    android:textColor="#515151"
                    android:textSize="16dp" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/btn_history"
                android:layout_width="match_parent"
                android:layout_height="48dp"
                android:layout_marginLeft="2dp"
                android:layout_marginRight="2dp"
                android:layout_marginBottom="3dp"
                android:background="#f6f6f6"
                android:clickable="true"
                android:gravity="center_vertical"
                android:orientation="horizontal">
    
                <TextView
                    android:id="@+id/history_txt"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginLeft="20dp"
                    android:layout_weight="0.75"
                    android:fontFamily="@font/open_sans"
                    android:text="Unsubmitted inspections"
                    android:textColor="#515151"
                    android:textSize="16dp" />
    
                <RelativeLayout
                    android:id="@+id/relativelayout"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="0.25"
                    android:gravity="center">
    
                    <ImageView
                        android:id="@+id/myImageView"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:src="@drawable/ic_icons_badges_gr_count_ylw" />
    
                    <TextView
                        android:id="@+id/ImageViewText"
                        android:layout_width="12dp"
                        android:layout_height="12dp"
                        android:layout_alignLeft="@id/myImageView"
                        android:layout_alignTop="@id/myImageView"
                        android:layout_alignRight="@id/myImageView"
                        android:layout_alignBottom="@id/myImageView"
                        android:fontFamily="@font/open_sans_semibold"
                        android:gravity="center"
                        android:text="0"
                        android:textAlignment="center"
                        android:textColor="#000000"
                        android:textSize="12sp" />
    
                </RelativeLayout>
    </LinearLayout>
     </LinearLayout>
  </RelativeLayout>

使用以下代码打开弹出窗口:

   LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    View  view = inflater.inflate(R.layout.popup,null);
   PopupWindow mypopupWindow = new PopupWindow(view,850,RelativeLayout.LayoutParams.WRAP_CONTENT,true);
                   mypopupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
                    mypopupWindow.showAsDropDown(v,10);
                    mypopupWindow.setElevation(20);

如何使其与两个方向的所有设备兼容?

解决方法

您已为布局设置了自定义宽度。这就是它在某些设备中被削减的原因。尝试根据设备尺寸应用适当的宽度。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?