Fab按钮不起作用

时间:2016-06-05 16:45:39

标签: android android-studio android-listfragment floating-action-button

我的活动 MainFragment 扩展 ListFragment ,并使用此部分代码创建项目

@Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        ViewHolder holder;

        if (convertView == null) {
            convertView = getActivity().getLayoutInflater()
                    .inflate(R.layout.list_item_drs, parent, false);

            holder = new ViewHolder();
            holder.dateTextView = (TextView)convertView.findViewById(R.id.drs_dateTextView);
            holder.dsMainDisplay = (ImageView)convertView.findViewById(R.id.cloud_MainView);

            getListView().setDivider(null);
            getListView().setDividerHeight(0);
            getListView().setSelector(android.R.color.transparent);

            convertView.setTag(holder);

        }else {
            holder = (ViewHolder) convertView.getTag();
        }
        Cloud c = getItem(position);

        return convertView;
    }

}

我想把Fab按钮放在主视图的顶部|底部位置,所以我使用 onCreateView 方法来扩充我创建的xml布局 list_view ,其中我描述了Fab按钮< / p>

@TargetApi(11)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
                         Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View v = inflater.inflate(R.layout.list_view,null);

    FrameLayout fl = (FrameLayout)inflater.inflate(R.layout.list_view, parent,false);

    FloatingActionButton fab = (FloatingActionButton) fl.findViewById(R.id.addNew);
    fab.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick (View view) {

            //Intent i = new Intent(getActivity(), AddActivity.class);
           // getActivity().startActivity(i);

    }

    });

list_view xml 当我使用其他类型的布局时,此代码在FrameLayout中消失

<ListView android:id="@id/android:list"
    android:layout_height="match_parent"
    android:layout_width="match_parent"/>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/addNew"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    app:useCompatPadding="true"
    app:elevation="5dp"
    app:pressedTranslationZ="0dp"
    android:src="@android:drawable/ic_dialog_email"/>

现在,当我滚动列表时,Fab按钮出现在正确位置并保持原位,但现在它没有显示任何响应。任何想法如何解决它?

1 个答案:

答案 0 :(得分:2)

由于fab在list_view.xml中定义,因此您必须通过

访问它
FloatingActionButton fab = (FloatingActionButton) v.findViewById(R.id.addNew);

然后onCreateView必须返回刚刚膨胀的视图,即

return v;