3

我有一个横向模式的活动。里面有一个像这样对齐的自定义标题视图:

目前看来

是否可以保持横向模式并将此视图“伪造”为纵向模式,如下所示: 所需视图

我试图覆盖我的自定义 TitleView 并把这样的东西draw(Canvas)

 public class VerticalTitle extends Title{

      public draw(Canvas){
           canvas.save();
           canvas.rotate(getWidth() / 2, getHeight() / 2);
           // i tryed many translations, but get none to work
           canvas.translate(0, getHeight());
           super.draw(canvas);
           canvas.restore()
      }

      public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
           super.onMeasure(heightMeasureSpec, widthMeasureSpec);
           setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
      }
}

如果有任何兴趣,TitleBar 从 RelativeLayout 扩展并具有固定的高度和 fill_parent 宽度

View 中的 setRotate 参数不是一个选项,因为应用程序应该与 2.2 保持兼容。

4

2 回答 2

1

我从来没有这样做过,但我在 SO 上找到了另外两个答案,它们展示了你可能实现这一点的方法。

第一个涉及扩展 TextView 类,在这里。既然你想做一个整体的看法,我认为下一个答案更适合你的情况。

另一个答案是使用旋转创建动画来处理它。答案就在这里

于 2012-05-30T12:34:00.237 回答
1

您必须扩展 Text 视图并构建您的自定义垂直 TextView 首先查看这两个链接以获取更多详细信息

  1. 垂直文本视图
  2. 垂直旋转标签

然后在你的 Layout-land 中你可以使用这个 Xml 文件来进行你的布局:

<?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:orientation="vertical" >

    <com.yourpackage.CustomVerticalTextView
        android:layout_width="42dp"
        android:layout_height="fill_parent"
        android:text="@string/hello"
        android:background="#0000FF" />

</LinearLayout>

如果要旋转布局而不是将其所有子级旋转 90 度,请使用 LayoutAnimationController

有关更多详细信息,请参阅此SO 线程

于 2012-05-30T12:42:11.460 回答