我非常擅长在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>
答案 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。