Android扭曲的用户界面

我无法find下面的失真的根本原因。
用户界面工作正常,但当我旋转屏幕风景,用户界面变得滚动时扭曲。
当屏幕再次旋转到肖像时,这个失真会继续。

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="8dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <include layout="@layout/i_details" /> <include layout="@layout/v_details" /> <include layout="@layout/d_details" /> </LinearLayout> </ScrollView> 

UPDATE
i_details

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:orientation="vertical"> <FrameLayout android:layout_width="match_parent" android:layout_height="100dp" android:background="@color/colorPrimary"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left|bottom" android:layout_margin="4dp" android:text="Large Text" android:textSize="25sp" /> </FrameLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:elevation="4dp" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:layout_margin="8dp" android:text="Message" android:textSize="14sp" /> <TextView android:id="@+id/message" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="top|start" android:layout_margin="8dp" android:text="RANDOM TEXT" android:textSize="18sp" /> </LinearLayout> </LinearLayout> 

v_details

 <?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="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_margin="4dp"> <ImageView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="100dp" android:adjustViewBounds="true" android:scaleType="centerCrop" android:layout_alignParentTop="true" android:background="@color/colorPrimary" /> <android.support.design.widget.FloatingActionButton android:id="@+id/navigateFab" android:layout_width="61dp" android:layout_height="61dp" android:layout_gravity="bottom|end" android:layout_marginRight="12dp" android:layout_marginBottom="-24dp" android:background="@color/colorAccent" android:contentDescription="navigation" android:elevation="8dp" android:src="@drawable/ic_navigate_24dp" app:pressedTranslationZ="2dp" android:layout_above="@+id/linearLayout" android:layout_alignParentEnd="true" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:elevation="4dp" android:layout_below="@id/map" android:orientation="vertical" android:id="@+id/linearLayout"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:layout_marginTop="4dp" android:text="Random Text" android:textSize="14sp" /> <TextView android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:gravity="top|start" android:text="Random Text" android:textSize="18sp" /> <TextView android:id="@+id/address" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:drawablePadding="4dp" android:drawableStart="@drawable/ic_place_24dp" android:gravity="top|start" android:text="Random Text" android:textSize="18sp" /> <TextView android:id="@+id/phone" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:autoLink="phone" android:clickable="true" android:drawablePadding="4dp" android:drawableStart="@drawable/ic_call_24dp" android:gravity="top|start" android:text="Random Text" android:textSize="16sp" /> <TextView android:id="@+id/website" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:autoLink="web" android:clickable="true" android:drawablePadding="4dp" android:drawableStart="@drawable/ic_language_24dp" android:gravity="top|start" android:text="Random Text" android:textSize="16sp" /> </LinearLayout> </RelativeLayout> 

d_details

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:elevation="4dp" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:layout_marginTop="4dp" android:text="Random Text" android:textSize="14sp" /> <TextView android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:gravity="top|start" android:text="Random Text" android:textSize="18sp" /> <TextView android:id="@+id/address" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:drawablePadding="4dp" android:drawableStart="@drawable/ic_place_24dp" android:gravity="top|start" android:text="Random Text" android:textSize="18sp" /> <TextView android:id="@+id/phone" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:autoLink="phone" android:clickable="true" android:drawablePadding="4dp" android:drawableStart="@drawable/ic_call_24dp" android:gravity="top|start" android:text="Random Text" android:textSize="16sp" /> <TextView android:id="@+id/email" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:autoLink="email" android:clickable="true" android:drawablePadding="4dp" android:drawableStart="@drawable/ic_mail_24dp" android:gravity="top|start" android:text="Random Text" android:textSize="16sp" /> </LinearLayout> 

更新3
添加活动代码和陈述的片段逻辑

i_activity

 public class MYActivity extends AppCompatActivity { private static final String LOG_TAG = MYActivity.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_invitation); MYFragment myFragment = new MYFragment(); // In case this activity was started with special instructions from an // Intent, pass the Intent's extras to the fragment as arguments myFragment.setArguments(getIntent().getExtras()); // Add the fragment to the 'my_container' FrameLayout getSupportFragmentManager().beginTransaction().add(R.id.my_container, myFragment).commit(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); recreate(); } } 

在Fragment中,我获取从活动传递的ID,填充我的静态UI,
启动CURSOR LOADER

 @Override public void onActivityCreated(Bundle savedInstanceState) { Log.d(LOG_TAG, "Activity Created"); getLoaderManager().initLoader(CURSOR_LOADER, getArguments(), this); super.onActivityCreated(savedInstanceState); } 


onLoadFinished(装载程序加载器,光标游标)
直接获取并填充我的dynamicUI视图​​。
不使用任何适配器,因为所有视图都是简单的文本视图

包含的布局是简单的布局,LinearLayout作为父容器,FrameLayout或LinearLayout作为子视图和其他视图。

我正在使用毕加索lib来加载静态地图。
更新2毕加索是不是在删除毕加索后的问题,问题依然存在。
设备:Nexus 5 Android操作系统:6.0.1

在这里输入图像说明

Solutions Collecting From Web of "Android扭曲的用户界面"

问题是您的Fragment创build两次方向更改在创build新的Fragment对象之前检查saveInstancestate。

 private MYFragment myfragment;//define fragment globally if(savedInstanceState == null) { myfragment= new MYFragment();//set tag for fragment getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, headlines, FRAGMENT_TAG_STRING).commit(); // Use tags, it's simpler to deal with } else { myfragment= getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG_STRING); } 

请尝试更改您的XML,如下面的示例中所示。

想法是 – 你需要保持整个事物在相对布局。 一旦你使用Relative布局,它可以让你把项目放在另一个之上。

  <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="8dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/one" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <include layout="@layout/activity_line_graph" android:id="@+id/two" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/one"/> <include layout="@layout/activity_my_stocks" android:id="@+id/three" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/two"/> <include layout="@layout/widget_collection" android:id="@+id/four" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/three"/> </LinearLayout> </RelativeLayout> </ScrollView> 

每个包括应该,

  1. 一个ID被引用。
  2. 否则也有宽度和高度,忽略上面或下面的位置。 希望这有助于嘿,我希望你有一个美好的生日派对:)提前祝福!

尝试在方向更改时调用decoreview的invalidate()方法。

  @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { this.getWindow().getDecorView().invalidate(); } } 

希望这会有所帮助。