Android:获取在 android.support 中创建的任何视图的 ID 时出错。v7.widget.Toolbar
Android : Error in getting id of any view created inside android.support.v7.widget.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>
这是我在片段或扩展 AppCompatActivity 的 Activity 中查找那些视图 ID 的代码。
内部片段:
`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);`
在 Activity 中:
FrameLayout flMessageCountBg = (FrameLayout) findViewById(R.id.fl_message_bg);
我在这两个方面都得到了空 case.Please 帮我解决这个问题。提前致谢。
试试这个方法
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
FrameLayout flMessageCountBg = (FrameLayout) toolbar.findViewById(R.id.fl_message_bg);
您正在使用支持库,因此您应该将工具栏设置为支持操作栏。然后,您可以使用 toolbar.findviewbyid(id)
获取工具栏内的视图
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ImageView iv = (ImageView) toolbar.findViewById(R.id.iv_cart);
如果您正在使用片段并且您的 activity 扩展了 AppCompatActivity,那么您可以按如下方式设置支持操作栏:
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
从activity中的片段获取工具栏然后你从 工具栏 获取 framelayout,如下所示:
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
FrameLayout flMessageCountBg = (FrameLayout) toolbar.findViewById(R.id.fl_message_bg);
解决方案非常简单,获取在 android.support.v7.widget.Toolbar 中创建的视图的 ID(内部片段)。
flMessageCountBg = (FrameLayout) getActivity().findViewById(R.id.fl_message_bg);
我创建了三个布局文件夹 layout、layout-large-port 和 layout-xlarge-port,我在测试 7 英寸平板电脑时错过了更改 ID从 layout-large-port.
中选择 ID
@Malek,@Context and @bhargav
感谢您的帮助。
我无法获取工具栏内的 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>
这是我在片段或扩展 AppCompatActivity 的 Activity 中查找那些视图 ID 的代码。 内部片段:
`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);`
在 Activity 中:
FrameLayout flMessageCountBg = (FrameLayout) findViewById(R.id.fl_message_bg);
我在这两个方面都得到了空 case.Please 帮我解决这个问题。提前致谢。
试试这个方法
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
FrameLayout flMessageCountBg = (FrameLayout) toolbar.findViewById(R.id.fl_message_bg);
您正在使用支持库,因此您应该将工具栏设置为支持操作栏。然后,您可以使用 toolbar.findviewbyid(id)
获取工具栏内的视图Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ImageView iv = (ImageView) toolbar.findViewById(R.id.iv_cart);
如果您正在使用片段并且您的 activity 扩展了 AppCompatActivity,那么您可以按如下方式设置支持操作栏:
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
从activity中的片段获取工具栏然后你从 工具栏 获取 framelayout,如下所示:
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
FrameLayout flMessageCountBg = (FrameLayout) toolbar.findViewById(R.id.fl_message_bg);
解决方案非常简单,获取在 android.support.v7.widget.Toolbar 中创建的视图的 ID(内部片段)。
flMessageCountBg = (FrameLayout) getActivity().findViewById(R.id.fl_message_bg);
我创建了三个布局文件夹 layout、layout-large-port 和 layout-xlarge-port,我在测试 7 英寸平板电脑时错过了更改 ID从 layout-large-port.
中选择 ID@Malek,@Context and @bhargav
感谢您的帮助。