我是Android编程的新手,现在我试图将图像放置在水平滚动视图中。
实际上我想做的是,我想显示需要从右向左自动滚动的图像阵列。
到目前为止,我已经尝试过如下操作
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/image2"
android:layout_width="150dp"
android:layout_height="150dp"
android:src="@drawable/icon"
android:layout_centerHorizontal="true"
android:layout_marginRight="5px"/>
</LinearLayout>
</HorizontalScroll>
活动文件-
package com.myhorizontalScroll;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ImageView;
public class MyHorizontalScrollActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// declare a class field:
final Handler h = new Handler();
// later:
final ImageView scroll=(ImageView)findViewById(R.id.image2);
Thread t = new Thread(){
public void run(){
int y = scroll.getScrollY();
int x = scroll.getScrollX();
while(y<1600){
// need final values to create anonymous inner class
final int X = x;
final int Y = y;
h.post(new Runnable() {
public void run() {
scroll.scrollTo(X, Y);
}
});
x++;
try {
sleep(1000/12);
} catch (InterruptedException e) {
}
}
}
};
t.start();
}
}
现在图像视图从左到左; imageview实际上位于左侧。
如何将图像视图放置在右侧,我希望此滚动需要连续完成。
我该如何进行?
这是我在其中一个应用中执行的操作。这本质上用于显示喜欢帖子的用户的个人资料图片。您自然会为自己弄清楚一点,但是我会尽力帮助您。
首先是XML:
<LinearLayout
android:id="@+id/linlaLikesStrip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:text="LIKES BY:"
android:textColor="#888888"
android:textSize="14sp"
android:textStyle="bold" >
</TextView>
<HorizontalScrollView
android:id="@+id/horscoLikes"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:overScrollMode="never"
android:scrollbars="none" >
<LinearLayout
android:id="@+id/linlaLikes"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
在我的Java代码中,我声明了它们并在全局范围内进行了强制转换,因此您必须做一点点弄清楚。
JAVA代码:
linlaLikes.removeAllViews(); for (int i = 0; i < arrLikes.size(); i++) { final getLikes newLikes = arrLikes.get(i); ImageView imgUsers = new ImageView(FeedDetails.this); // SET THE IMAGEVIEW DIMENSIONS int dimens = 45; float density = getResources().getDisplayMetrics().density; int finalDimens = (int)(dimens * density); LinearLayout.LayoutParams imgvwDimens = new LinearLayout.LayoutParams(finalDimens, finalDimens); imgUsers.setLayoutParams(imgvwDimens); // SET SCALETYPE imgUsers.setScaleType(ScaleType.CENTER_CROP); // SET THE MARGIN int dimensMargin = 4; float densityMargin = getResources().getDisplayMetrics().density; int finalDimensMargin = (int)(dimensMargin * densityMargin); LinearLayout.LayoutParams imgvwMargin = new LinearLayout.LayoutParams(finalDimens, finalDimens); imgvwMargin.setMargins(finalDimensMargin, finalDimensMargin, finalDimensMargin, finalDimensMargin); // SET PADDING // imgUsers.setPadding(finalDimensMargin, finalDimensMargin, finalDimensMargin, finalDimensMargin); // DISPLAY THE IMAGES USING THE PROFILELOADER CLASS proLoader.DisplayImage(newLikes.getUserProfilePicture(), imgUsers); // ADD THE NEW IMAGEVIEW WITH THE PROFILE PICTURE LOADED TO THE LINEARLAYOUT linlaLikes.addView(imgUsers, imgvwMargin); imgUsers.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent showProfile = new Intent(getApplicationContext(), WallPost.class); showProfile.putExtra("USER_ID", newLikes.getUserID()); showProfile.putExtra("USER_PROFILE", "USER_PROFILE"); startActivity(showProfile); } }); }
一些解释:
arrLikes
是保存个人资料图片的ArrayList
。我使用arrLikes.size()
中的for loop
来获取正确的数字。ImageViews
的大小,然后在它们之间设置Margin
,需要进行很多操作。ImageViews
中显示个人资料图片。希望这会有所帮助。并且随时询问您在上述任何方面是否有任何困难。