如何旋转 TextView?

4

我希望旋转TextView,但是我无法得到正确的输出。我得到了缺少一些文本的textView。

布局中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_marginTop = "50dip">

<TextView android:layout_width="wrap_content" android:gravity="bottom"
    android:layout_height="wrap_content" android:id="@+id/text"
    android:text="Shreeji \n Nath" />

</RelativeLayout> 

在动画中

   <?xml version="1.0" encoding="utf-8"?>
   <rotate xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromDegrees="40" android:toDegrees="-90" android:pivotX="40%"
        android:duration="0">
   </rotate>

Java文件

import android.app.Activity;
import android.os.Bundle;
import android.view.animation.AnimationUtils;
import android.view.animation.RotateAnimation;
import android.widget.TextView;

public class VDemo extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TextView tv = (TextView)findViewById(R.id.text);
    RotateAnimation ranim = (RotateAnimation)AnimationUtils.loadAnimation(this,R.anim.myanim);
    ranim.setFillAfter(true); 
    tv.setAnimation(ranim);

  }
}

1
缺少一些文本? 如果在第一配置中 - 这意味着您的文本长度超过了您设置的20dip,如果在旋转期间出现问题,那是因为您的布局太小,无法显示20dipx120dip。 - ania
如果我设置了wrap_content,问题仍然存在。 - Jignesh Ansodariya
1
但是你的问题是在旋转过程中吗? - ania
是的,完全正确。通常情况下(没有旋转),没有问题。 - Jignesh Ansodariya
1
奇怪,你的代码可以运行,没有任何文本丢失。我能看到的唯一问题是你的animation:duration为0,因此实际上你无法看到动画效果。如果你想检查整个代码,请提供它。 - ania
显示剩余2条评论
2个回答

3

新增于API 12级。

view.animate().rotationBy(90).start()

2

将main.xml更改为:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <TextView android:layout_alignParentLeft="true"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="TextView" android:layout_marginTop="50dip"
        android:layout_marginLeft="50dip" android:id="@+id/text1"></TextView>

</RelativeLayout>

是的,我同意Mohit Verma的观点,你的动画效果可以正常工作,但是你看不到文本,因为它被隐藏了。改变边距,你就能看到整个文本了。第二个问题就是我之前提到的——你的动画效果可以正常工作,但是你看不到效果,因为持续时间为0,将其改为至少1000,你就能看到效果了。还有一个建议——在Android工具中,你有一个叫做HierarchyViewer的工具。你可以在那里检查UI的许多内容——这非常有帮助,在这种情况下,它会帮助你解决问题。 - ania

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接