如何解决如何创建与 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 举报,一经查实,本站将立刻删除。