在setRotation之后调整片段大小

时间:2013-10-17 16:46:54

标签: android android-layout android-fragments

寻找答案,但只能找到具有相同问题且没有解决方案的其他人。我试图用一个非常简单的布局来旋转一个普通的SherlockFragment(仅用于测试目的):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/jan"
    android:textColor="@color/standard_text_color"
    android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>

片段代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{   
    View result = inflater.inflate(R.layout.foo_layout, null);
    result.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,  ViewGroup.LayoutParams.MATCH_PARENT));
    result.setRotation(90); 
    return result;
}

这将在中间旋转关于枢轴的视图,但不会将布局更改为正确的边界。我设法做的最好的是setPivotX(size.x / 2)和setPivotY(size.x / 2),size.x是设备的屏幕宽度和setLayoutParams(size.y,size.y)。这种方法的工作原理在于它创建了一个像片段大小的正方形,但由于它被设置为size.y而不是x,但是不是x但是setLayoutParams(size.x,size.y)只创建了半个正方形...并且奇怪的是setLayoutParams(size.y,size.x)。

有没有人对此有任何解决方案,片段会在整个片段旋转后调整到正确的x和y坐标以填充屏幕?

1 个答案:

答案 0 :(得分:2)

在我设置的活动xml的FrameLayout持有者中:

android:clipChildren="false" 

然后我在旋转视图上使用了translationX和translationY将其移动到位并且中提琴工作了。我会说这实际上是Android中的一个错误,在旋转之后,宽度和高度的剪切边界保持不变但应该交换。