片段无法显示图像

时间:2018-03-26 05:00:48

标签: java android image fragment

我非常擅长在Android中使用Fragments,并尝试使用View Pager为我的应用程序构建一个简单的图像滑块。我已经有了代码但它没有工作,图片在应用程序运行时没有显示,任何人都可以帮我解决这个问题。 这是我的代码

fragment_home.xml

<LinearLayout 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.wk.sigah.FragmentHome"
android:background="@color/colorPrimary">

<!-- TODO: Update blank fragment layout -->
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
        <android.support.v4.view.ViewPager
            android:id="@+id/viewImage"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </android.support.v4.view.ViewPager>
</ScrollView>

FragmentHome.java

public class FragmentHome extends Fragment {
ViewPager viewPager;
customSwitchAdapterHome adapter;
public FragmentHome() {
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    /**return inflater.inflate(R.layout.fragment_fragment_home, container, false);*/
    View view=inflater.inflate(R.layout.fragment_fragment_home,container,false);
    viewPager=(ViewPager)view.findViewById(R.id.viewImage);
    adapter=new customSwitchAdapterHome(this.getActivity());
    viewPager.setAdapter(adapter);
    return view;
}

customSwitchAdapterHome.java

public class customSwitchAdapterHome extends PagerAdapter {
private int[] image_resource={R.drawable.background_bottom_nav,R.drawable.background_login_two};
private Context ctx;
private LayoutInflater layoutInflater;

public customSwitchAdapterHome(Context ctx){
    this.ctx=ctx;
}

@Override
public int getCount() {
    return image_resource.length;
}

@Override
public boolean isViewFromObject(View view, Object object) {
    return(view==(LinearLayout)object);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    layoutInflater=(LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View item_view=layoutInflater.inflate(R.layout.swipe_layout,container,false);
    ImageView imageView=(ImageView)item_view.findViewById(R.id.image_view);
    TextView textView=(TextView)item_view.findViewById(R.id.image_count);
    imageView.setImageResource(image_resource[position]);
    textView.setText(" "+position);
    container.addView(item_view);
    return item_view;

}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
   container.removeView((LinearLayout)object);
}

swipe_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:orientation="vertical">
    <TextView
        android:id="@+id/image_count"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center"
        android:layout_marginTop="20dp"
        android:text="Hello World" />
    <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginTop="10dp"/>
</LinearLayout>

2 个答案:

答案 0 :(得分:0)

这是因为具有垂直方向的LinearLayout中的TextView具有imageView无法容纳的高度match_parent。因此,要解决此问题,您可以使用wrap_content来textView或使用

  android:layout_weight="1"

并使用

  android:layout_height="0dp"

到线性布局中的textView和imageView

答案 1 :(得分:0)

你的布局搞砸了。尝试下面的布局。将TextView身高设为wrap_content。如果您将高度设置为match_parent,那么它将覆盖整个LinearLayout,因此ImageView将不会显示。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:gravity="center"
        android:layout_height="match_parent">
            <TextView
                android:id="@+id/image_count"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_marginBottom="20dp"
                android:text="Hello World" />
            <ImageView
                android:id="@+id/image_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                />
        </LinearLayout>

这只是一个例子,因为我不知道ui究竟是什么。所以布局是基本的构建块所以你应该开始阅读 User Interface & Navigation