gpt4 book ai didi

android - 如何向这些现有编码添加滑动 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:05 30 4
gpt4 key购买 nike

  • 我需要在 tab activity 中添加一个 swipe view。在这些下面的 xml 编码中我刚刚创建了一个六个选项卡,即 home、blog、audio、video、more 和图库。

  • Tabs 创建完美。但我无法知道如何为这六个选项卡添加滑动。我需要添加从右到左滑动和从左到右滑动。

layout_home.xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<TabHost
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<TabWidget
android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@drawable/bottom_bar"
android:layout_weight="0" />

<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<FrameLayout
android:id="@+id/tab_home"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

<FrameLayout
android:id="@+id/tab_video"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

<FrameLayout
android:id="@+id/tab_audio"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>

<FrameLayout
android:id="@+id/tab_blog"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>

<FrameLayout
android:id="@+id/tab_gal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>

<FrameLayout
android:id="@+id/tab_more"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>

</FrameLayout>

<com.sit.gems.util.AppPromoPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0" />

</LinearLayout>

</TabHost>

</LinearLayout>

AppPromoPager.java:

这些是 AppPromopager。这里我使用的是 ViewPager。

 package com.sit.gems.util;

import java.net.URLDecoder;
import java.util.List;
import android.content.Context;
import android.os.Handler;
import android.os.Parcelable;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.RelativeLayout;
import com.gems.android.R;
import com.sit.gems.app.AppData;
import com.sit.gems.util.ImageCache.ImageCacheParams;

public class AppPromoPager extends RelativeLayout implements
ViewPager.OnPageChangeListener {

//private PromoPageIndicator indicator;
private PromoPagerListener listener;
private Handler trackerHandler = new Handler();
private ImageFetcher mImageFetcher;

public AppPromoPager(Context context) {
super(context);
}

public AppPromoPager(Context context, AttributeSet attrs) {
super(context, attrs);
}

public AppPromoPager(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

public void init(FragmentActivity context, List<String> promotions) {
ImageCacheParams cacheParams = new ImageCacheParams(context, AppConstants.IMAGE_CACHE_DIR);
mImageFetcher = new ImageFetcher(context, AppData.getScreenWidth(),(AppData.getScreenWidth()/2));
mImageFetcher.setLoadingImage(R.drawable.ic_launcher);
mImageFetcher.addImageCache(context.getSupportFragmentManager(), cacheParams);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
ViewPager pager = new ViewPager(context);
ViewPagerAdapter adapter = new ViewPagerAdapter(context, promotions);
pager.setAdapter(adapter);
pager.setCurrentItem(0);
pager.setOnPageChangeListener(this);
addView(pager, params);
//indicator = new PromoPageIndicator(context);
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params1.addRule(RelativeLayout.CENTER_HORIZONTAL);
params1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
params1.setMargins(0, 0, 0, 3);
//addView(indicator, params1);
//if (promotions.size() > 1)
// indicator.addCircleImage(promotions.size());
/*pager.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_MOVE
&& scrollView != null) {
scrollView.requestDisallowInterceptTouchEvent(true);
}
return false;
}
});*/
}
class ViewPagerAdapter extends PagerAdapter {

Context activity;
List<String> promotions;

public ViewPagerAdapter(Context context, List<String> promotions) {
this.promotions = promotions;
activity = context;
}

public int getCount() {
return promotions.size();
}

public Object instantiateItem(View collection, final int position) {
final ImageView view = new ImageView(activity);
view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
view.setScaleType(ScaleType.CENTER);

String imageUrl = promotions.get(position);


if (imageUrl != null && imageUrl.length() > 0) {
setImage(view, imageUrl);
}

view.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
listener.selectedPromo(promotions.get(position),position);
}
});
((ViewPager) collection).addView(view, 0);
return view;
}

@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}

@Override
public Parcelable saveState() {
return null;
}
}

@Override
public void onPageScrollStateChanged(int arg0) {
//listener.selectedPosition(arg0);
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override
public void onPageSelected(int position) {
listener.selectedPosition(position);
}

public interface PromoPagerListener {
public void selectedPromo(String offer,int postion);
public void selectedPosition(int postion);
}

public void setPromoPagerListener(PromoPagerListener listener) {
this.listener = listener;
}

private void setImage(final ImageView view, final String imageUrl) {
trackerHandler.post(new Runnable() {

@Override
public void run() {
mImageFetcher.loadImage(URLDecoder.decode(imageUrl),view);
}
});
}

}
  • 我认为在 viewpager 的帮助下我可以获得滑动 View 。AppPromoPager 中添加了 ViewPager。

  • 我向其中添加了一个 AppPromoPagerlayout_home.xml 文件。但直到现在我还没有得到滑动 View 。任何人都可以帮助我解决这些问题。谢谢。

最佳答案

最好使用 Scrollable Tabs它使用了 Swipe view pager with the action bar tabs 的组合.

关于android - 如何向这些现有编码添加滑动 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23492056/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com