2011-12-14 117 views
0

我有一个问题按钮的可见性。我有2个来自标题栏的按钮。其中一个编辑,其中一个完成。首先,我想看到只是编辑按钮,当我点击编辑按钮,编辑按钮的可见性将是错误的,并完成按钮可见性真实。以编程方式从标题栏更改可见性按钮?

我从XML获得他们的ID,当我点击其中一个我想改变可见性,但edit.setVisibility();它不工作。怎么了?我可以看到编辑按钮。我想以编程方式更改按钮的可见性。

任何人都可以有任何想法吗?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    final boolean customTitle = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

    setContentView(R.layout.main); 

    edit=(Button)findViewById(R.id.edit); 
    done=(Button)findViewById(R.id.done); 

    edit.setVisibility(View.INVISIBLE); 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.main); 

    if (customTitle) { 
     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.main); 
    } 

的main.xml:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

    <Button android:id="@+id/edit" 
      android:layout_width="57px" 
      android:layout_height="wrap_content" 
      android:text="edit"/> 

    <Button android:id="@+id/done" 
      android:layout_width="57px" 
      android:layout_height="wrap_content" 
      android:text="done"/> 

</LinearLayout> 
+1

请对这种行为使用操作栏。操作栏在Android 3.0+上是原生的,并且有多种库用于在较早版本的Android上提供操作栏(例如,ActionBarSherlock)。 – CommonsWare 2011-12-14 14:00:27

回答

0

首先,你错过了android:在你的LinearLayout定向参数。

第二,如果你想与编辑之间的变化做,你可以这样做:

edit.setVisibility(View.GONE); 
done.setVisibiluty(View.VISIBLE); 

和对面来改变重新编辑按钮。随着View.INVISIBLE按钮不会显示,但仍使用它的位置。

0

问题是setFeatureInt只是设置标题的资源ID,这将导致布局资源的新的膨胀,它将被放置在称为id/title_container的系统FrameLayout中。这可以使用eclipse中的Hierarchy Viewer进行检查。

本质上,你最终得到两个主布局的实例。一组作为内容视图(标题下方),另一组作为标题。当您致电findViewById时,它只会在内容视图中查看与该ID匹配的任何视图。这意味着您检索的editdone按钮是内容视图中的按钮。

如果您要访问的标题区域中的按钮,你可以使用

View v = getWindow().getDecorView(); 
    edit=(Button)v.findViewById(R.id.edit); 
    done=(Button)v.findViewById(R.id.done); 
    edit.setVisibility(View.INVISIBLE); 

这将通过这个窗口,而不仅仅是内容画面的整体视图结构进行搜索,从而解决您的问题。

相关问题