android clipChildrenとclipToPadding
10386 ワード
clipChildren
参照先:http://www.2cto.com/kf/201608/537822.html実現機能:1.下部ナビゲーションバーのアイコン2.viewpager 1画面複数画面表示
実装方法:
1.下のナビゲーションバーのアイコン
注意:ルートノード
2.viewpager 1画面複数画面表示親レイアウトには が必要です. ViewPager幅 margin を設置する.
注意:この方法にはバグがあります.真ん中のViewしかスライドできませんが、左か右のViewをクリックしてスライドしたい場合はどうすればいいですか.
解決策:親のtouchイベントをviewPagerに配布します.linearLayoutはView Pagerコントロールの親コンテナです.
clipToPadding
ListView、ScrollView、GridViewにpaddingTopまたはpaddingBottomを設定すると、上部と下部にスライドするとデフォルトでpadding/marginがスライド中にずっと存在し、viewは常に最下部と最上部にスライドできず、違和感があることがわかります.次の図では、左右のrecyclerviewにpaddingtopが設定されており、左側のclipToPaddingプロパティは設定されていません(デフォルトはtrue)、右側の設定clipToPaddingにfalse が設定されています.
参照先:http://www.2cto.com/kf/201608/537822.html実現機能:1.下部ナビゲーションバーのアイコン2.viewpager 1画面複数画面表示
実装方法:
1.下のナビゲーションバーのアイコン
注意:ルートノード
android:clipChildren="false"
に配置する必要があります
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_clip_children"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
tools:context="com.sign.viewpagerdemo.ClipChildrenActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:background="#e7d321"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="90dp"
android:layout_gravity="bottom"
android:layout_weight="1"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher" />
LinearLayout>
RelativeLayout>
2.viewpager 1画面複数画面表示
android:clipChildren="false"
android:layout_width="match_parent"
android:layout_marginLeft="80dp" android:layout_marginRight="80dp"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.sign.viewpagerdemo.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:clipChildren="false"
android:gravity="center">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager3"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:clipChildren="false" />
LinearLayout>
LinearLayout>
注意:この方法にはバグがあります.真ん中のViewしかスライドできませんが、左か右のViewをクリックしてスライドしたい場合はどうすればいいですか.
解決策:親のtouchイベントをviewPagerに配布します.linearLayoutはView Pagerコントロールの親コンテナです.
linearLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return viewPager.dispatchTouchEvent(event);
}
});
clipToPadding
ListView、ScrollView、GridViewにpaddingTopまたはpaddingBottomを設定すると、上部と下部にスライドするとデフォルトでpadding/marginがスライド中にずっと存在し、viewは常に最下部と最上部にスライドできず、違和感があることがわかります.次の図では、左右のrecyclerviewにpaddingtopが設定されており、左側のclipToPaddingプロパティは設定されていません(デフォルトはtrue)、右側の設定clipToPaddingにfalse が設定されています.