如何动态设置ViewPager尺寸?

时间:2015-04-19 21:24:12

标签: android imageview android-viewpager android-linearlayout

我有一个简单的问题,我已经搜索了很多关于它的但仍然没有答案。我有一个viewPager,我想将其高度设置为屏幕尺寸的一半。我使用了setMinimumHeight()但没有发生任何事情。怎么做 ? 我的XML和Java代码如下:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:background="#d4d4d4">

<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_above="@+id/product_detail_button">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:id="@+id/layout_parent"
    android:background="#ffffff">

        <android.support.v4.view.ViewPager
            android:id="@+id/product_detail_pictures"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:paddingTop="20dp"
            android:paddingBottom="20dp"/>
 </LinearLayout>
 </ScrollView>
 </RelativeLayout>

我的java代码是

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_product_detail_page);
    dialogue=new ProgressDialog(this);
    dialogue.setMessage("Loading...");
    dialogue.show();

    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    int height = displaymetrics.heightPixels;
    int width = displaymetrics.widthPixels;

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    viewPager = (ViewPager) findViewById(R.id.product_detail_pictures);

    int margin = (int) TypedValue.applyDimension               

    (TypedValue.COMPLEX_UNIT_DIP, 20*9, getResources().getDisplayMetrics());
    viewPager.setPageMargin(-margin);
    viewPager.setClipToPadding(false);
    viewPager.setMinimumHeight(height/2);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    HelperMethods.p=this;

}

P.S。我在viewpager中使用Imageview来显示。

1 个答案:

答案 0 :(得分:0)

如何为此布局和视图寻呼机添加布局,其中visibility = gone ..set layout weight = 1 ...并且当您需要更改viewpager高度时以编程方式更改可见性...我将为您提供xml布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/pager"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:background="#dddddd"
    android:layout_height="match_parent"
    android:animateLayoutChanges="true"
    >


        <android.support.v4.view.ViewPager
            android:layout_width="match_parent" android:layout_height="match_parent"
            tools:context=".MainActivity"
            android:layout_weight="1">

        <android.support.v4.view.PagerTitleStrip
                android:id="@+id/pager_title_strip"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:background="#33b5e5"
                android:textColor="#fff"
                android:paddingTop="4dp"
                android:paddingBottom="4dp">
        </android.support.v4.view.PagerTitleStrip>
        </android.support.v4.view.ViewPager>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#ffd60001"
        android:layout_weight="1"
        android:id="@+id/mylayout"
        android:visibility="visible"></LinearLayout>
</LinearLayout>

当您将布局可见性更改为VISIBLE时,视图寻呼机高度将恰好是屏幕的一半

来自java,你这样做

(findViewById(R.id.mylayout)).setVisibility(View.VISIBLE); or View.GONE

when layout is visible when hiding the layout