Android 单击按钮时隐藏布局
如何在单击按钮时隐藏布局。下面是我的布局。单击搜索按钮后,我需要隐藏主布局并显示搜索布局,反之亦然Android 单击按钮时隐藏布局,android,Android,如何在单击按钮时隐藏布局。下面是我的布局。单击搜索按钮后,我需要隐藏主布局并显示搜索布局,反之亦然 <com.bibliotheque.android.view.viewgroup.FlyOutContainer xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main" android:layout_width="match_parent" android:la
<com.bibliotheque.android.view.viewgroup.FlyOutContainer xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="fill_parent" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#444488"
android:orientation="vertical" >
<Button
android:id="@+id/home_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="toggleMenu"
android:text="@string/home_btn_label" />
<Button
android:id="@+id/search_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="toggleMenu"
android:text="@string/search_btn_label" />
<Button
android:id="@+id/mybooks_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="toggleMenu"
android:text="@string/mybooks_btn_label" />
<Button
android:id="@+id/contact_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="toggleMenu"
android:text="@string/contact_btn_label" />
<Button
android:id="@+id/about_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="toggleMenu"
android:text="@string/about_btn_label" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="#888888"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/home"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="#888888"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
<LinearLayout
android:id="@+id/search_layout"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="#888888"
android:orientation="vertical" >
<EditText
android:id="@+id/searchInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:inputType="text" />
<ListView
android:id="@+id/bookList"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</com.bibliotheque.android.view.viewgroup.FlyOutContainer>
我试了如下
public class MainActivity extends Activity implements SimpleGestureListener{
private SimpleGestureFilter detector;
FlyOutContainer root;
private ListView lv;
Button home,search,mybooks,contact,about;
View home_layout,search_layout,mybooks_layout,contact_layout,about_layout;
// Listview Adapter
ArrayAdapter<String> adapter;
EditText inputSearch;
ViewGroup content;
ArrayList<HashMap<String, String>> productList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
home=(Button)findViewById(R.id.home_btn);
search=(Button)findViewById(R.id.search_btn);
mybooks=(Button)findViewById(R.id.mybooks_btn);
contact=(Button)findViewById(R.id.contact_btn);
about=(Button)findViewById(R.id.about_btn);
home_layout=findViewById(R.id.home);
search_layout=findViewById(R.id.search_layout);
//mybooks_layout=(LinearLayout)findViewById(R.id.mybooks_layout);
//contact_layout=(LinearLayout)findViewById(R.id.contact_layout);
//about_layout=(LinearLayout)findViewById(R.id.about_layout);
detector = new SimpleGestureFilter(this,this);
this.root = (FlyOutContainer) this.getLayoutInflater().inflate(R.layout.activity_sample, null);
this.setContentView(root);
inputSearch=(EditText)findViewById(R.id.searchInput);
lv=(ListView)findViewById(R.id.bookList);
String products[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE",
"iPhone 4S", "Samsung Galaxy Note 800",
"Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};
adapter = new ArrayAdapter<String>(this, R.layout.book_list_item, R.id.book_item, products);
lv.setAdapter(adapter);
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
MainActivity.this.adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.sample, menu);
return true;
}
public void toggleMenu(View v){
Log.i("Toggle method", "Toggle Method");
home_layout.setVisibility(View.GONE); // not working
this.root.toggleMenu();
}
public enum MenuState {
CLOSED, OPEN, CLOSING, OPENING
};
@Override
public void onSwipe(int direction) {
switch (direction) {
case SimpleGestureFilter.SWIPE_RIGHT :
if(this.root.menuCurrentState==com.bibliotheque.android.view.viewgroup.FlyOutContainer.MenuState.CLOSED){
try{
this.root.toggleMenu();
}catch(Exception e){
Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
}
}
break;
case SimpleGestureFilter.SWIPE_LEFT :
if(this.root.menuCurrentState==com.bibliotheque.android.view.viewgroup.FlyOutContainer.MenuState.OPEN){
try{
this.root.toggleMenu();
}catch(Exception e){
//Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
}
}
break;
case SimpleGestureFilter.SWIPE_DOWN :
break;
case SimpleGestureFilter.SWIPE_UP :
break;
}
//Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
// TODO Auto-generated method stub
}
@Override
public boolean dispatchTouchEvent(MotionEvent me){
this.detector.onTouchEvent(me);
return super.dispatchTouchEvent(me);
}
@Override
public void onDoubleTap() {
// TODO Auto-generated method stub
}
}
public类MainActivity扩展活动实现SimpleGetStureListener{
专用单纯形滤波器检测器;
飞出容器根;
私有ListView lv;
按钮主页、搜索、mybooks、联系人、关于;
查看主页布局、搜索布局、mybooks布局、contact布局、about布局;
//列表视图适配器
阵列适配器;
编辑文本输入搜索;
视图组内容;
ArrayList产品列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_示例);
主页=(按钮)findViewById(R.id.home\u btn);
搜索=(按钮)findviewbyd(R.id.search\u btn);
mybooks=(按钮)findViewById(R.id.mybooks\u btn);
联系人=(按钮)findViewById(R.id.contact\u btn);
about=(按钮)findviewbyd(R.id.about_btn);
主页布局=findViewById(R.id.home);
search\u layout=findviewbyd(R.id.search\u layout);
//mybooks\u布局=(LinearLayout)findViewById(R.id.mybooks\u布局);
//联系人布局=(线性布局)findViewById(R.id.contact\u布局);
//about_layout=(LinearLayout)findViewById(R.id.about_layout);
检测器=新的SimpleGestureFilter(这个,这个);
this.root=(弹出式容器)this.getLayoutFlater().inflate(R.layout.activity\u示例,null);
此.setContentView(根目录);
inputSearch=(EditText)findViewById(R.id.searchInput);
lv=(ListView)findViewById(R.id.bookList);
字符串产品[]={“戴尔Inspiron”、“HTC One X”、“HTC Wildfire S”、“HTC Sense”、“HTC Sensation XE”,
“iPhone 4S”、“三星Galaxy Note 800”,
“三星Galaxy S3”、“MacBook Air”、“MacMini”、“MacBook Pro”};
适配器=新阵列适配器(此,R.layout.book\u列表项,R.id.book\u项,产品);
低压设置适配器(适配器);
inputSearch.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列cs、int arg1、int arg2、int arg3){
//当用户更改文本时
MainActivity.this.adapter.getFilter().filter(cs);
}
@凌驾
更改前的公共void(字符序列arg0、int arg1、int arg2、,
int arg3){
//TODO自动生成的方法存根
}
@凌驾
public void PostTextChanged(可编辑arg0){
//TODO自动生成的方法存根
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.sample,menu);
返回true;
}
公共无效切换菜单(视图v){
Log.i(“切换方法”、“切换方法”);
home_layout.setVisibility(View.GONE);//不工作
this.root.toggleMenu();
}
公共枚举菜单{
关,开,关,开
};
@凌驾
公共空间(内部方向){
开关(方向){
case SimpleGestureFilter.swip_RIGHT:
if(this.root.menuCurrentState==com.bibliothequeue.android.view.viewgroup.FlyOutContainer.MenuState.CLOSED){
试一试{
this.root.toggleMenu();
}捕获(例外e){
Toast.makeText(例如toString(),Toast.LENGTH_LONG).show();
}
}
打破
case SimpleGestureFilter.swip_LEFT:
if(this.root.menuCurrentState==com.bibliothequeue.android.view.viewgroup.FlyOutContainer.MenuState.OPEN){
试一试{
this.root.toggleMenu();
}捕获(例外e){
//Toast.makeText(例如toString(),Toast.LENGTH_LONG).show();
}
}
打破
case SimpleGestureFilter.swip_向下:
打破
case SimpleGestureFilter.swip_UP:
打破
}
//Toast.makeText(this,str,Toast.LENGTH_SHORT).show();
//TODO自动生成的方法存根
}
@凌驾
公共布尔dispatchTouchEvent(MotionEvent me){
本.探测器.本体通风口(me);
返回super.dispatchTouchEvent(me);
}
@凌驾
公共空间{
//TODO自动生成的方法存根
}
}
toggleMenu方法中的setVisibility(View.GONE)从未被调用或不起作用。怎么可能
我隐藏那个布局
我正在我的另一个基本应用程序中尝试相同的代码,它工作正常,但在这里不起作用。:(我无法解决问题。请帮助我解决。您没有告诉布局随以下内容消失:
home.setVisibility(View.GONE);//not working
而是以下引用的按钮:
home=(Button)findViewById(R.id.home_btn);
不确定为什么要使用布局隐藏/显示而不是对话框(假设您希望打开搜索框以键入搜索条件),但无论如何,只需尝试快速基本按钮单击->切换布局即可 主页是需要在加载活动中显示的标准布局。 new_ly是您希望加载的新布局。默认情况下,将其设置为隐藏
private void ChangeLayout(){
LinearLayout home_ly = (LinearLayout)findViewById(R.id.home_layout);
LinearLayout new_ly = (LinearLayout)findViewById(R.id.new_layout);
if(home_ly.getVisibility() == View.VISIBLE && new_ly.getVisibility() == View.INVISIBLE){
home_ly.setVisibility(View.INVISIBLE);
new_ly.setVisibility(View.VISIBLE);
}
else if(home_ly.getVisibility() == View.INVISIBLE && new_ly.getVisibility() == View.VISIBLE){
home_ly.setVisibility(View.VISIBLE);
new_ly.setVisibility(View.INVISIBLE);
}
else{
home_ly.setVisibility(View.VISIBLE);
new_ly.setVisibility(View.INVISIBLE);
}
}
这将进入oncreate:
Button btn = (Button)findViewById(R.id.change);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ChangeLayout();
}
});
主布局正在消失吗?请尝试使视图可见或不可见,而不是布局。@Biplab尝试了这两种方法,但都没有发生任何事情实际调用了
onClick()
方法?请通过调试验证