是否可以为android的viewpager设置透明

Posted

技术标签:

【中文标题】是否可以为android的viewpager设置透明【英文标题】:is it possible to set transparent for viewpager of android 【发布时间】:2016-06-14 13:24:31 【问题描述】:

我想为ViewPager 设置透明,但我找不到任何方法(它总是白色,不透明)

我的布局:main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="@drawable/wallpaper">

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:background="#00ffffff"
        android:layout_
        android:layout_ >
    </android.support.v4.view.ViewPager>
</LinearLayout>

第一个片段的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="#00ffffff"
    android:layout_
    android:layout_>

    <TextView
        android:layout_
        android:layout_
        android:text="AAAAAAAAAAAAAAAA"
        android:id="@+id/textView"
        android:layout_gravity="center_horizontal"/>
</LinearLayout>

第二个片段的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="#00ffffff"
    android:layout_
    android:layout_>

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_
        android:layout_
        android:text="New Button"
        android:id="@+id/button"
        android:layout_gravity="center_horizontal"/>
</LinearLayout>

我已经为ViewPager 的背景和片段的布局设置了透明。但它总是白色的。

那么,可以为ViewPager 设置透明吗?你能为我解释一下吗(如果有的话)。任何建议将不胜感激。谢谢。

编辑: 我使用了活动的默认主题:

截图:

【问题讨论】:

试试这个,希望对您有所帮助:link 我已经为每个 *.xml 的背景颜色设置了透明 您是否已经在父布局中使用“半透明”主题?您在父 LinearLayout 中的壁纸颜色是什么? @ErAcube 我不明白“使用半透明”的意思:(。壁纸是一张图片 @vandaics 你的活动主题是什么? 【参考方案1】:

Awais Soomro 的回答没有用,所以我想出了这个:

片段.java

@Override
public void onStart() 
    super.onStart();
    getView().setBackgroundColor(Color.TRANSPARENT);

甚至……

@Override
public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) 
    super.onViewCreated(view, savedInstanceState);

    view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() 
        @Override
        public void onGlobalLayout() 
            view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            view.setBackgroundColor(Color.TRANSPARENT);
        
    );

【讨论】:

【参考方案2】:

下面是代码:

MyFragment.java

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class MyFragment extends Fragment 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
        return inflater.inflate(R.layout.my_fragment, container, false);
    

my_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="#00ffffff"
    android:layout_
    android:layout_>

    <TextView
        android:layout_
        android:layout_
        android:text="AAAAAAAAAAAAAAAA"
        android:textColor="#69f0ae"
        android:id="@+id/textView"
        android:layout_gravity="center_horizontal"/>
</LinearLayout>

Main.java

FragmentPagerAdapter mPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) 
    @Override
    public Fragment getItem(int position) 
        return new MyFragment();
    

    @Override
    public int getCount() 
        return 1;
    
;
ViewPager mViewPager = (ViewPager) findViewById(R.id.view_pager);
mViewPager.setAdapter(mPagerAdapter);

ma​​in_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_
    android:layout_
    android:background="@drawable/wallpaper">

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:background="#00000000"
        android:layout_
        android:layout_ >
    </android.support.v4.view.ViewPager>
</android.support.constraint.ConstraintLayout>

【讨论】:

【参考方案3】:

问题可能不是 ViewPager 的背景颜色。这可能是 ViewPager 正在使用的适配器夸大的视图。更改该视图的背景颜色。

【讨论】:

以上是关于是否可以为android的viewpager设置透明的主要内容,如果未能解决你的问题,请参考以下文章

Android中Scrollview嵌套viewpage问题:viewpage设置非固定高点,按照自定义的scrollview 还是不能解决.

Android使用ViewPager实现轮播图(自动和手动)

android解决Viewpager设置高度为wrap_content无效的方法

Android禁止ViewPager左右滑动

Android禁止ViewPager左右滑动

Android番外篇 ViewPager.setOffscreenPageLimit()