为什么ProgressBar动画在父视图布局后添加时会出现异常?

时间:2016-09-22 13:03:11

标签: android android-layout android-progressbar layout-inflater

我的Activity只有ButtonLinearLayout。每次点击该按钮,都会通过LinearLayout将新增加的视图添加到addView()。添加的视图是单个ProgressBar

LinearLayout布局后添加新视图时,ProgressBar动画表现奇怪,仅执行部分旋转。但是,在LinearLayout布局之前添加新视图时(在Activity的{​​{1}}中),所有这些都会正常运行。

为什么会这样?有什么方法可以解决这个问题吗?这个问题似乎只出现在Android 5.x上,它在新版本中按预期工作。也许这是一个平台错误,但我认为这是一个相当简单的用例,如果在互联网上没有关于它的信息,也许这是我做错了。但它是什么?

以下是代码:

MainActivity.java

onCreate()

activity_main.xml中

public class MainActivity extends AppCompatActivity {

    LinearLayout mainLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mainLayout = (LinearLayout) findViewById(R.id.main_layout);

        //These three views will display the correct ProgressBar animation
        for (int i = 0; i < 3; i++) {
            addElement();
        }

        findViewById(R.id.add_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //These views will NOT display the correct ProgressBar animation
                //(on Android 5.0 or 5.1)
                addElement();
            }
        });
    }

    private void addElement() {
        View childView = View.inflate(this, R.layout.test_element, null);
        mainLayout.addView(childView);
    }
}

test_element.xml

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

    <Button
        android:id="@+id/add_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add view" />

    <LinearLayout
        android:id="@+id/main_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" />
</LinearLayout>

这是现在的行为(前三个是在布局视图之前添加的行为):

Current app behavior

谢谢!

0 个答案:

没有答案