将ImageView添加到LinearLayout会动态出错

时间:2014-12-18 08:42:42

标签: android android-layout

我写了一个小函数

private void addTabIndicators(int tabCount){
    LinearLayout indicatorsContainer = (LinearLayout)findViewById(R.id.indicators_container);
    for(int i = 0; i<tabCount; i++){
        ImageView indicator = (ImageView)this.getLayoutInflater().inflate(R.layout.tab_indicator, null);
        indicatorsContainer.addView(indicator);
    }
}

应该根据寻呼机适配器中有多少个标签向我的活动中的linearlayout添加圆圈。一切都会很酷但是,我添加的图像视图而不是在xml布局中声明的大小,正在调整为1x1px ...任何想法,我可能会出错?以下是指标和线性布局的布局

tab_indicator.xml:

<?xml version="1.0" encoding="utf-8"?>
<ImageView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="64dp"
    android:layout_height="64dp"
    android:layout_margin="8dp"
    android:src="@drawable/floating_button_background"/>

指标容器:

<LinearLayout
    android:layout_marginBottom="16dp"
    android:orientation="horizontal"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:id="@+id/indicators_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</LinearLayout>

1 个答案:

答案 0 :(得分:2)

错误可能在这里

    ImageView indicator = (ImageView)this.getLayoutInflater().inflate(R.layout.tab_indicator, null);

您需要传递图像视图的根视图,以提供XML中定义的布局。如果您传递null,则会设置默认的layoutparams。

放置

    ImageView indicator = (ImageView)this.getLayoutInflater().inflate(R.layout.tab_indicator, your root view of image view,false);

这是一个非常常见的错误。除非你真的知道自己在做什么,否则永远不会传递null。

在这里阅读更多内容:

http://developer.android.com/reference/android/view/LayoutInflater.html

希望有所帮助