3

ランドスケープモードのアクティビティがあります。内部には、次のように配置されたカスタムタイトルビューがあります。

現在のビュー

横向きモードを維持し、この1つのビューを次のように縦向きモードに「偽造」することは可能ですか? 希望のビュー

カスタム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の幅が固定されています。

アプリは2.2との互換性を維持する必要があるため、ViewのsetRotateパラメーターはオプションではありません。

4

2 に答える 2

1

私はこれを行ったことがありませんが、SOでこれを達成する方法を示す他の2つの答えを見つけました。

1つ目は、TextViewクラスの拡張であり、ここにあります。ただし、全体像を把握したいので、次の答えの方が状況に合っていると思います。

もう1つの答えは、回転を使用してアニメーションを作成し、それに対処することです。その答えはここにあります。

于 2012-05-30T12:34:00.237 に答える
1

テキストビューを拡張し、カスタムの垂直TextViewを構築する必要があります。詳細については、最初にこれら2つのリンクを参照してください。

  1. 垂直TextView
  2. 垂直回転ラベル

その後、レイアウトランドで次の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 に答える