2016-05-21 7 views
1

私は、スワイプ可能なフラグメントを持つViewpagerを作成しました。他のフラグメントの部分的なビューを見ることができます。フラグメントには1つのイメージビューがあり、これが表示されます。私は別のエミュレータで自分のコードを実行しようとしましたが、結果は常に異なります。すべての画面サイズで同じように見えるようにするにはどうすればよいですか? これはviewpagerとボタンを含む断片である:サイズと密度が異なるとイメージビューが違って見える

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="com.example.digital05.masu.Fragments.MassageViewFragment"> 

<android.support.v4.view.ViewPager 
    android:layout_width="match_parent" 
    android:layout_height="150dp" 
    android:id="@+id/massageViewPager" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentTop="true"> 
</android.support.v4.view.ViewPager> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Date" 
    android:id="@+id/buttonDate" 
    android:layout_below="@+id/massageViewPager" 
    android:layout_alignLeft="@+id/buttonTime" 
    android:layout_alignStart="@+id/buttonTime" 
    android:layout_marginTop="43dp"/> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Time" 
    android:id="@+id/buttonTime" 
    android:layout_below="@+id/buttonDate" 
    android:layout_centerHorizontal="true"/> 

これは、フラグメントがどのように見えるかです:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      tools:context="com.example.digital05.masu.Fragments.SwedishMFragment"> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginTop="58dp" 
    android:src="@drawable/prenatal_massage" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true"/> 

そして、これは私が部分図を表示するようにviewpagerを設定する方法です他のフラグメント(その画像ビュー)の:

mViewPager.setClipToPadding(false); 
mViewPager.setPadding(300, 0, 300, 0); 
mViewPager.setPageMargin(50); 

そして、 Sは私が手に出力されます:

enter image description here

は、どのように私はそれがとてもそれらのすべてがネクサス6P上で同じように見えるようにすることができますか?私はdpをpxに、またはその逆に変換する必要がありますか、どのようにするのですか? ありがとうございました!

+0

私はPercentRelativeLayoutを使用し、かつ、正確に、私はそれを使用する必要があります – Arlind

+0

に合わせてセットscaleTypeだろうか? – jlively

+0

このブログをチェックすると、https://inthecheesefactory.com/blog/know-percent-support-library/en – Arlind

答えて

0

float density = context.getResources().getDisplayMetrics().density; 


public static int dp(float value) { 
     if (value == 0) { 
      return 0; 
     } 
     return (int) Math.ceil(density * value); 
    } 

また、あなたが適切な値を得ることができ、コードを以下によるButterKnifeライブラリを使用することによって別の方法があります試してみると、私はそれをうまく動作させることができました。 mensPager.setPageMargin()の値をdimens.xmlにdpとして格納しました。次に、私は、setPageMarginの値が異なるdimens hdpi、xhdpi、xxhdpi、xxxhdpiフォルダを作成しました。このように、エミュレータ/電話機の種類によって、異なるファイルが使用され、イメージはすべて同じに見えます。

これは魅力的な作品です。

よろしく、 ジェイ

0

ViewPagerの余白と余白を生の数字で設定すると、同じように見えるすべての画面でこの方法でDPに変換する必要があります。

@BindDimen(R.dimen.your_dimen_value) 
int myPadding; 

あなたはDPのは、ここにチェックを理解するヘルプが必要な場合::カップル後https://developer.android.com/guide/practices/screens_support.html

+0

あなたの答えをありがとう!彼らに変換する方法を教えてもらえますか? – jlively

+0

@jlively私の投稿を更新しましょう。 – Amir

+0

@jlivelyあなたの問題は修正されましたか?また、画像のscaleTypeをcenterCropに設定します。 – Amir

関連する問題