如何在Android中制作一个View隐形/ Gone onBackPressed()方法?

时间:2012-11-21 06:39:53

标签: android android-layout android-activity android-tabhost visibility

我在Tabhost中有5个活动。 (即MainActivity.java Home.java,NowReading.java,Favorites.java和Profile.java)。在主要活动中,我正在加载tabhost,如下所示。

public class MainActivity extends TabActivity {
    TabHost tabHost;
    Context context = MainActivity.this;
    TextView txt_Login;
    View homeTabLayout;
    View reviewLayout;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txt_Login = (TextView) findViewById(R.id.txt_Login);
        final Spinner spnrLanguage = (Spinner) findViewById(R.id.spnrLanguage);
        final Spinner spnrBrowseBy = (Spinner) findViewById(R.id.spnrBrowseBy);

        tabHost = getTabHost();

        // Android tab
        Intent intentHome = new Intent().setClass(this, Home.class);
        TabSpec tabSpecHome = tabHost
                .newTabSpec("Home")
                .setIndicator("Home",
                        getResources().getDrawable(R.drawable.home))
                .setContent(intentHome);

        tabHost.addTab(tabSpecHome);

        Intent intentNowReading = new Intent().setClass(this, NowReading.class);
        TabSpec tabSpecNowReading = tabHost
                .newTabSpec("Now Reading")

                .setIndicator("Now Reading",
                        getResources().getDrawable(R.drawable.now_reading))
                .setContent(intentNowReading);
        tabHost.addTab(tabSpecNowReading);

        Intent intentFavourite = new Intent().setClass(this, Favorites.class);
        TabSpec tabSpecFavourite = tabHost
                .newTabSpec("Favourite")
                .setIndicator("Favorites",
                        getResources().getDrawable(R.drawable.favorites))
                .setContent(intentFavourite);
        tabHost.addTab(tabSpecFavourite);

        Intent intentProfile = new Intent().setClass(this, Profile.class);
        TabSpec tabSpecProfile = tabHost
                .newTabSpec("Profile")
                .setIndicator("Profile",
                        getResources().getDrawable(R.drawable.profile))
                .setContent(intentProfile);
        tabHost.addTab(tabSpecProfile);
tabHost.setCurrentTabByTag("Home");

在Mainactivity.java中将Home.java设置为当前Tab。如

tabHost.setCurrentTabByTag("Home");

在setContentView中加载布局home_activity.xml。

enter image description here

这是XML代码

    <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frameLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <RelativeLayout
        android:id="@+id/rel_HomeLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <GridView
            android:id="@+id/gridview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:numColumns="auto_fit"
            android:stretchMode="columnWidth" >
        </GridView>
    </RelativeLayout>

    <ScrollView
        android:id="@+id/scroll_ReviewLayout"
        android:layout_width="fill_parent"
        android:layout_height="match_parent" >

        <RelativeLayout
            android:id="@+id/rel_ReviewLayout01"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <ImageView
                android:id="@+id/img_OverVuBookCoverPhoto"
                android:layout_width="130dp"
                android:layout_height="165dp"
                android:layout_margin="5dp"
                android:adjustViewBounds="true"
                android:background="@drawable/rounded_image_borders"
                android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:src="@drawable/book1" />

            <TextView
                android:id="@+id/txt_revwBookTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignTop="@+id/img_OverVuBookCoverPhoto"
                android:layout_marginTop="10dp"
                android:layout_toRightOf="@+id/img_OverVuBookCoverPhoto"
                android:text="The Basic Doctrine Of Islam"
                android:textColor="@color/White"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/txt_revwAutherName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/txt_revwBookTitle"
                android:layout_marginTop="2dp"
                android:layout_toRightOf="@+id/img_OverVuBookCoverPhoto"
                android:text="By: Andrew J Newman"
                android:textColor="@color/SkyBlue"
                android:textSize="11sp" />

            <TextView
                android:id="@+id/txt_PublishDate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/txt_revwAutherName"
                android:layout_marginTop="2dp"
                android:layout_toRightOf="@+id/img_OverVuBookCoverPhoto"
                android:text="Published: July, 30 2007"
                android:textColor="@color/DarkGray"
                android:textSize="11sp" />

            <RatingBar
                android:id="@+id/ratingbar"
                style="?android:attr/ratingBarStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/txt_PublishDate"
                android:layout_marginBottom="6dp"
                android:layout_marginTop="6dp"
                android:layout_toRightOf="@+id/img_OverVuBookCoverPhoto"
                android:isIndicator="false"
                android:numStars="5"
                android:rating="5"
                android:stepSize="1" />

            <Button
                android:id="@+id/btnOpenBook"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/img_OverVuBookCoverPhoto"
                android:layout_below="@+id/ratingbar"
                android:layout_toRightOf="@+id/img_OverVuBookCoverPhoto"
                android:text="Open Book"
                android:textColor="@color/Black"
                android:textSize="13sp" />

            <ImageButton
                android:id="@+id/btnBack"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/btnOpenBook"
                android:layout_alignTop="@+id/btnOpenBook"
                android:layout_marginLeft="5dp"
                android:layout_toRightOf="@+id/btnOpenBook"
                android:src="@drawable/pic_btn_back"
                android:textColor="@color/Black"
                android:textSize="14sp" />

            <TextView
                android:id="@+id/txt_BookOverview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/img_OverVuBookCoverPhoto"
                android:layout_below="@+id/img_OverVuBookCoverPhoto"
                android:layout_marginBottom="10dp"
                android:layout_marginTop="20dp"
                android:text="Book Overview"
                android:textColor="@color/White"
                android:textSize="13sp" />

            <TextView
                android:id="@+id/txt_BookOverviewDetails"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/img_OverVuBookCoverPhoto"
                android:layout_below="@+id/txt_BookOverview"
                android:lineSpacingExtra="4dp"
                android:lines="10"
                android:text="Lorem ipsum dolor sit amet, there was nothing that I can do she was dead, for this reasean I m gonna loose every thing consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." >
            </TextView>
        </RelativeLayout>
    </ScrollView>

</FrameLayout>

在Home.java的onCreate方法中,我使Framelayout不可见/ Gone(其中包含了Cliked的概述)

  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home_activity);

        homeTabLayout = findViewById(R.id.rel_HomeLayout);
        reviewLayout = findViewById(R.id.scroll_ReviewLayout);
        reviewLayout.setVisibility(View.GONE);

现在,当我点击任何一本书时,它会使我之前在onCreat方法上看不见/已经消失的视图如上所述使用代码

gridView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
                    long arg3) {
                // TODO Auto-generated method stub

                Toast.makeText(context, BookTitle.get(pos), Toast.LENGTH_SHORT)
                        .show();
                reviewLayout.setVisibility(View.VISIBLE);

enter image description here

注意:它不是新的行为,而是我在Click事件上使Visible成为一个视图(即reviewLayout.setVisibility(View.VISIBLE);)。

  • 我想在onBackPressed()方法上将此视图设为Invisible / Gone。
  • 我应该在MainActivity.java或Home.java文件中调用此方法?
  • 如果我在MainActivity.java中调用此方法,则会引发nullPointerException。

2 个答案:

答案 0 :(得分:3)

您可以覆盖后退按钮方法

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // You can call view.setVisiblility(View.GONE) if you want to remove it from the layout, or view.setVisibility(View.INVISIBLE) if you just want to hide it.
        view.setVisiblility(View.GONE); // or view.setVisibility(View.INVISIBLE);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

答案 1 :(得分:2)

你可以覆盖 BackPress方法...... 借助此功能,您可以隐藏布局或查看...

@Override
public void onBackPressed() {
     super.onBackPressed();
               // Invisible or Gone Your Views here....
    }