我正在尝试创建基于 FrameLayout 的 ViewGroup,它可能会顺时针/逆时针旋转 90 度,它仍然可以正常工作
到目前为止,我的结果并不那么成功。到目前为止,它看起来像这样(旋转之前的左侧,之后;对不起鲜红色)
活动布局
<?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="match_parent">
<com.example.TestProject.RotatedFrameLayout
android:id="@+id/container"
android:layout_centerInParent="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00F"/>
</RelativeLayout>
旋转框架布局
public class RotatedFrameLayout extends FrameLayout {
private boolean firstMeasure = true;
public RotatedFrameLayout( Context context ) {
super( context );
init();
}
public RotatedFrameLayout( Context context, AttributeSet attrs ) {
super( context, attrs );
init();
}
public RotatedFrameLayout( Context context, AttributeSet attrs, int defStyle ) {
super( context, attrs, defStyle );
init();
}
private void init() {
setRotation( 90f );
}
@Override
protected void onMeasure( int widthMeasureSpec, int heightMeasureSpec ) {
super.onMeasure( heightMeasureSpec, widthMeasureSpec );
}
}
一些额外的信息
- 我不想使用动画旋转,因为按钮不可点击
- 我不想使用横向模式,因为屏幕上的横向导航按钮在 Nexus 7 上占用了很多空间(这是我试图扩大旋转的主要原因
- 似乎只有屏幕的左侧和右侧超出范围