【问题标题】:How can I set a include of an actionbar, for example, invisible?如何设置操作栏的包含,例如,不可见?
【发布时间】:2013-10-02 14:43:40
【问题描述】:

我为操作栏做了一个布局:

actionbar.xml:

<LinearLayout
    android:id="@+id/titleLayout"
    android:layout_width="fill_parent"
    android:layout_height="85dp"
    android:height="70dip"
    android:orientation="horizontal"
    android:paddingBottom="5dp"
    android:paddingTop="5dp" >

    <ImageView
        android:id="@+id/logo"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:layout_marginBottom="54dp"
        android:paddingLeft="24dp"
        android:paddingTop="5dp"
        android:src="@drawable/mobility" />

</LinearLayout>

我将此布局包含在其他一些布局中,如下所示:

 <include
  android:id="@+id/include"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  layout="@layout/actionbar" />

现在我想将这个包含的操作栏布局设置为在我包含它的所有布局中不可见。

有没有办法做到这一点?

编辑:

考虑一下我使用 ViewFlipper 在布局之间切换。

【问题讨论】:

    标签: android


    【解决方案1】:

    你就不能这样做

    findViewById(R.id.titleLayout).setVisibility(View.INVISIBLE);
    

    如果您使用的是 ViewFlipper,那么这样的事情可能会有所帮助:

    vf.getCurrentView().findViewById(R.id.titleLayout).setVisibility(View.INVISIBLE);
    

    其中 vf 是 xml 中对 ViewFlipper 的引用

    HTH

    【讨论】:

    • es 我试过这个,它适用于第一个布局。因为我使用 ViewFlipper 在视图之间切换,如果我使用您编写的代码,它只能在“主视图”中获得,我在其中声明了 ViewFlipper,不可见。所以我想让它包含在所有布局中不可见。有什么想法吗?
    • 不,它也不起作用。我想我必须单独设置所有包括。感谢您的回复。
    【解决方案2】:

    您可以像任何其他元素或布局一样将其设置为不可见:

    findViewById(R.id.include).setVisibility(View.INVISIBLE);
    

    两个备注:

    • 我认为您实际上是在寻找更强大的隐形形式,即:findViewById(R.id.include).setVisibility(View.GONE);
    • 您必须为每个包含使用不同的 ID,以确保找到正确的 ID。但我猜你只是简化了问题的代码。

    【讨论】:

    • 是的,我试过这个,它适用于第一个布局。因为我使用 ViewFlipper 在视图之间切换,如果我使用您编写的代码,它只能在“主视图”中获得,我在其中声明了 ViewFlipper,不可见。所以我想让它包含在所有布局中不可见。有什么想法吗?
    • 你有多个ActionBar吗?您正在使用什么 API 级别?您要么处于较新的 API 级别(Android 3.0+)并且能够使用 Fragments 和 ActionBar(无 ViewFlipper),要么处于较旧的 API 级别(Android 2.3-)并且必须使用 ViewFlipper 和 ActionBarSherlock。在第二种情况下,您必须单独设置所有包含不可见。
    • 我正在使用版本 4.0.3 和 minSdkVersion 14 进行编程。
    • 在这种情况下,您绝对应该使用 Fragments。 ViewFlipper 在 Android 3.0 之前是个好主意,但它消耗大量 CPU 和电池。进入 Fragments 和多个并行屏幕以及 ActionBar 的最简单方法是在 Eclipse 中添加一个新 Activity,选择导航并让它构建骨架。 Eclipse:新 -> Android 活动 -> 空白活动 -> 导航类型:可滚动选项卡和擦除
    • 感谢您的回答。知识渊博。
    【解决方案3】:

    试试这个,

    View mView = findViewById(R.id.include);
    ImageView mImgView = (ImageView) mView.findViewById(R.id.logo).setVisibility(View.GONE);
    

    使用这种方法,您可以访问您拥有的任何包含中的任何字段。

    【讨论】:

    • 错误:无法从 void 投射到 ImageView。
    • 清理项目
    猜你喜欢
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 2015-12-17
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    相关资源
    最近更新 更多