Android:在获取android.support.v7.widget.Toolbar

时间:2015-12-23 13:36:12

标签: android android-toolbar

我无法获得工具栏内的Framelayout或Textview的Id。请看一下:

<android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorAppBg"
            app:popupTheme="@style/AppTheme.PopupOverlay" >
            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:src="@drawable/logo"/>

                <FrameLayout
                    android:id="@+id/fl_message_bg"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:visibility="gone"
                    android:layout_gravity="right|center">
                    <ImageView
                        android:id="@+id/iv_cart"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="bottom"
                        android:layout_marginRight="12dp"
                        android:layout_marginTop="2dp"
                        android:src="@drawable/envelope"/>
                    <TextView
                        android:id="@+id/tv_message_count"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="top|right"
                        android:text="10"
                        android:textColor="@color/colorWhite"
                        android:gravity="center"
                        android:textSize="12sp"
                        android:visibility="visible"
                        android:background="@drawable/circle_notification"/>
                </FrameLayout>            
            </FrameLayout>
        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>

这是我在片段或Activity中查找那些视图的ID的代码,它扩展了AppCompatActivity。 内部碎片:

`private Activity activity;
@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        this.activity =(Activity)context;
    }
flMessageCountBg = (FrameLayout) activity.findViewById(R.id.fl_message_bg);` 

活动:

FrameLayout flMessageCountBg =(FrameLayout)findViewById(R.id.fl_message_bg);

我在这两种情况下都是空的。请帮我解决这个问题。提前谢谢。

4 个答案:

答案 0 :(得分:2)

您正在使用支持库,因此我应将工具栏设置为支持操作栏。然后,您可以使用 toolbar.findviewbyid(id)

获取工具栏中的视图
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ImageView iv = (ImageView) toolbar.findViewById(R.id.iv_cart);

如果您正在使用片段并且您的活动扩展 AppCompatActivity ,那么您可以按如下方式设置支持操作栏:

((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);

答案 1 :(得分:1)

试试这种方式

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
FrameLayout flMessageCountBg = (FrameLayout) toolbar.findViewById(R.id.fl_message_bg);

答案 2 :(得分:1)

片段中的活动获取工具栏,然后从获取 framelayout 工具栏像这样:

Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
FrameLayout flMessageCountBg = (FrameLayout) toolbar.findViewById(R.id.fl_message_bg);

答案 3 :(得分:0)

解决方案是获取在android.support.v7.widget.Toolbar中创建的视图的id(Inside Fragment)非常简单。 flMessageCountBg = (FrameLayout) getActivity().findViewById(R.id.fl_message_bg);

我创建了三个布局文件夹布局,layout-large-port和layout-xlarge-port ,我在测试7英寸平板电脑时错过了更改ID,该平板电脑从布局中选择了Id大口。

  

@ Malek,@ Context和@bhargav

感谢您的帮助。