Java Android编辑文本和图像之间的空间ArrayList
正在尝试以行格式列出文本和图像,现在显示在总共5个选项卡中。我使用布局参数为每行文本和图像提供填充,但文本和图像之间的差距太大 我不知道如何用我还在学习的代码编辑文本和图像之间的空间Java Android编辑文本和图像之间的空间ArrayList,java,android,android-layout,arraylist,layoutparams,Java,Android,Android Layout,Arraylist,Layoutparams,正在尝试以行格式列出文本和图像,现在显示在总共5个选项卡中。我使用布局参数为每行文本和图像提供填充,但文本和图像之间的差距太大 我不知道如何用我还在学习的代码编辑文本和图像之间的空间 public class SkillsActivity extends ActionBarActivity { private Toolbar toolbar; private ViewPager mPager; private SlidingTabLayout mTabs; protected void on
public class SkillsActivity extends ActionBarActivity {
private Toolbar toolbar;
private ViewPager mPager;
private SlidingTabLayout mTabs;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.skills_layout);
// toolbar = (Toolbar) findViewById(R.id.app_bar);
// setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
SlidingTabLayout mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs);
Integer[] iconResourceArray = { R.drawable.ic_star,
R.drawable.ic_star, R.drawable.ic_star,
R.drawable.ic_star, R.drawable.ic_star };
Integer[] titleResourceArray = { R.string.star_1, R.string.star_2,
R.string.star_3, R.string.star_4, R.string.star_5 };
mSlidingTabLayout.setIconResourceArray(iconResourceArray);
mSlidingTabLayout.setmTtileResourceArray(titleResourceArray);
mSlidingTabLayout.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
mSlidingTabLayout.setSelectedIndicatorColors(getResources().getColor(R.color.colorAccent));
mSlidingTabLayout.setCustomTabView(R.layout.custom_tab_title, R.id.tabtext, R.id.tabimage);
mSlidingTabLayout.setViewPager(mPager);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_whatever) {
return true;
}
if (id == android.R.id.home) {
NavUtils.navigateUpFromSameTask(this);
}
return super.onOptionsItemSelected(item);
}
class MyPagerAdapter extends FragmentPagerAdapter {
String[] tabs;
public MyPagerAdapter(FragmentManager fm) {
super(fm);
tabs = getResources().getStringArray(R.array.tabs);
}
@Override
public Fragment getItem(int position) {
MyFragment myFragment = MyFragment.getInstance(position);
return myFragment;
}
@Override
public CharSequence getPageTitle(int position) {
return tabs[position];
}
@Override
public int getCount() {
return 5;
}
}
public static class MyFragment extends Fragment {
public static final String TAB_POSITION_KEY = "TAB_PORITION_KEY";
//
// public static final int LT = 22;
// public static final int RB = 22;
// public static final int RS = 22;
//
// public static String SEPARATOR = " + ";
private ListView mainListView;
public static MyFragment getInstance(int position) {
MyFragment myFragment = new MyFragment();
Bundle args = new Bundle();
args.putInt(TAB_POSITION_KEY, position);
myFragment.setArguments(args);
return myFragment;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View layout = inflater.inflate(R.layout.fragment_my, container, false);
Bundle bundel = getArguments();
int position = bundel.getInt(TAB_POSITION_KEY);
ArrayList<ListItem> collection = new ArrayList<ListItem>();
mainListView = (ListView) layout.findViewById(R.id.mainListView);
String[] itemTitle = {};
switch (position) {
case 0:
ListItem.LT_RES_ID = R.drawable.trigger02;
ListItem.RS_RES_ID = R.drawable.trigger02;
itemTitle = new String[]{
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Tap" + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,};
// itemPictures = new Integer[]{LT, RB};
break;
case 1:
itemTitle = new String[]{
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,};
break;
case 2:
itemTitle = new String[]{
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID,};
break;
case 3:
itemTitle = new String[]{
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,
};
break;
case 4:
itemTitle = new String[]{
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID,
ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + "Ball Juggle (while standing) - Hold " + ListItem.SEPARATOR_0
+ ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.RS_RES_ID + ListItem.SEPARATOR_0
+ ListItem.TEXT_VIEW + ListItem.SEPARATOR_1 + " + Tap " + ListItem.SEPARATOR_0
+ListItem.IMAGE_VIEW + ListItem.SEPARATOR_1 + ListItem.LT_RES_ID,};
break;
default:
Toast.makeText(getActivity().getBaseContext(), "check tabs position", Toast.LENGTH_SHORT).show();
}
addAll(collection, itemTitle);
mainListView.setAdapter(new ListViewAdapter(collection));
return layout;
}
private static void addAll(ArrayList<ListItem> items, String[] data) {
for(String string : data) {
items.add(new ListItem(string));
}
}
}
}
公共类技能活动扩展了ActionBarActivity{
专用工具栏;
私人寻呼机;
私人滑动可布局MTAB;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.skills\u布局);
//工具栏=(工具栏)findViewById(R.id.app\u栏);
//设置支持操作栏(工具栏);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mPager=(ViewPager)findViewById(R.id.pager);
setAdapter(新的MyPagerAdapter(getSupportFragmentManager());
SlidingTabLayout mSlidingTabLayout=(SlidingTabLayout)findViewById(R.id.sliding_选项卡);
整数[]iconResourceArray={R.drawable.ic_星,
R.drawable.ic_星,R.drawable.ic_星,
R.drawable.ic_星,R.drawable.ic_星};
整数[]titleResourceRay={R.string.star_1,R.string.star_2,
R.string.star_3,R.string.star_4,R.string.star_5};
mSlidingTabLayout.setIconResourceArray(iconResourceArray);
mSlidingTabLayout.setmtileResourceArray(titleResourceArray);
mSlidingTabLayout.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
mSlidingTabLayout.setSelectedIndicator颜色(getResources().getColor(R.color.colorAccent));
mSlidingTabLayout.setCustomTabView(R.layout.custom_tab_title,R.id.tabtext,R.id.tabimage);
mSlidingTabLayout.setViewPager(mPager);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action_){
返回true;
}
if(id==android.R.id.home){
NavUtils.navigateUpFromSameTask(本);
}
返回super.onOptionsItemSelected(项目);
}
类MyPagerAdapter扩展了FragmentPagerAdapter{
字符串[]选项卡;
公共MyPagerAdapter(碎片管理器fm){
超级(fm);
tabs=getResources().getStringArray(R.array.tabs);
}
@凌驾
公共片段getItem(int位置){
MyFragment MyFragment=MyFragment.getInstance(位置);
返回myFragment;
}
@凌驾
公共字符序列getPageTitle(int位置){
返回标签[位置];
}
@凌驾
public int getCount(){
返回5;
}
}
公共静态类MyFragment扩展了Fragment{
公共静态最终字符串TAB\u POSITION\u KEY=“TAB\u poration\u KEY”;
//
//公共静态最终整数LT=22;
//公共静态最终int RB=22;
//公共静态最终整数RS=22;
//
//公共静态字符串分隔符=“+”;
私有ListView主ListView;
公共静态MyFragment getInstance(int位置){
MyFragment MyFragment=新的MyFragment();
Bundle args=新Bundle();
参数输入(制表符位置键位置);
myFragment.setArguments(args);
返回myFragment;
}
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
视图布局=充气机。充气(R.layout.fragment_my,container,false);
Bundle bundel=getArguments();
int position=bundel.getInt(制表符位置键);
ArrayList集合=新建ArrayList();
mainListView=(ListView)layout.findviewbyd(R.id.mainListView);
字符串[]itemTitle={};
开关(位置){
案例0:
ListItem.LT_RES_ID=R.drawable.trigger02;
ListItem.RS\u RES\u ID=R.drawable.trigger02;
itemTitle=新字符串[]{
ListItem.TEXT_视图+ListItem.SEPARATOR_1+“球变戏法(站立时)-按住”+ListItem.SEPARATOR_0
+ListItem.IMAGE\u视图+ListItem.SEPARATOR\u 1+ListItem.LT\u RES\u ID+ListItem.SEPARATOR\u 0
,
ListItem.TEXT_视图+ListItem.SEPARATOR_1+“球变戏法(站立时)-按住”+ListItem.SEPARATOR_0
+ListItem.IMAGE\u视图+ListItem.SEPARATOR\u 1+ListItem.RS\u RES\u ID+ListItem.SEPARATOR\u 0
+ListItem.TEXT_视图+ListItem.SEPARATOR_1+“点击”+ListItem.SEPARATOR_0
+ListItem.IMAGE\u VIEW+ListItem.SEPARATOR\u 1+ListItem.RS\u RES\u ID,};
//itemPictures=新整数[]{LT,RB};
打破
案例1:
itemTitle=新字符串[]{
ListItem.TEXT_视图+ListItem.SEPARATOR_1+“球变戏法(站立时)-按住”+ListItem.SEPARATOR_0
+ListItem.IMAGE\u视图+ListItem.SEPARATOR\u 1+ListItem.LT\u RES\u ID+ListItem.SEPARATOR\u 0
+ListItem.TEXT_视图+ListItem.SEPARATOR_1+“+点击”+ListItem.SEPARATOR_0
+ListItem.IMAGE\u视图+ListItem.SEPARATOR\u 1+ListItem.LT\u RES\u ID
+ListItem.TEXT_视图+ListItem.SEPARATOR_1+“+点击”+ListItem.SEPARATOR_0
+ListItem.IMAGE\u视图+ListItem.SEPARATOR\u 1+ListItem.LT\u RES\u ID,
ListItem.TEXT_视图+ListItem.SEPARATOR_1+“球
public class ListViewAdapter extends BaseAdapter {
private ArrayList<ListItem> mDataset;
public ListViewAdapter(ArrayList<ListItem> myDataset) {
mDataset = myDataset;
}
@Override
public int getCount() {
return mDataset.size();
}
@Override
public Object getItem(int position) {
return mDataset.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
LinearLayout layout;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
layout = (LinearLayout) v.findViewById(R.id.textList);
LinearLayout.LayoutParams relativeParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
relativeParams.leftMargin = 50;
relativeParams.topMargin = 10;
relativeParams.bottomMargin = 10;
relativeParams.gravity = Gravity.CENTER;
relativeParams.weight = 1;
// relativeParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
ListItem item = mDataset.get(position);
View view = item.getNextView(parent.getContext());
int index = 0;
while (view != null) {
layout.addView(view,index++,relativeParams);
view = item.getNextView(parent.getContext());
}
return v;
}
}
public class ListItem {
public String text;
public ListItem(String text) {
this.text = text;
viewList = text.split(SEPARATOR_0);
}
/**********************************************************************************************/
public static final String SEPARATOR_0 = ":::::::";
public static final String SEPARATOR_1 = "_separ1";
public static final String TEXT_VIEW = "_56text";
public static final String IMAGE_VIEW = "_23image";
public static final String LT = "LT";
public static final String RS = "RS";
public static int LT_RES_ID = -1;
public static int RS_RES_ID = -2;
private String[] viewList;
private int currentIndex;
public View getNextView(Context context) {
View result = null;
if (currentIndex < viewList.length ) {
String viewPointer = viewList[currentIndex++];
int id = -1;
String[] temp = viewPointer.split(SEPARATOR_1);
if (temp[0].startsWith(TEXT_VIEW)) {
result = new TextView(context);
((TextView)result).setText(temp[1]);//TODO: might be NPE
} else if (temp[0].startsWith(IMAGE_VIEW)) {
result = new ImageView(context);
if (temp[1].equals("" + LT_RES_ID)) {
id = LT_RES_ID;
} else if (temp[1].equals("" + RS_RES_ID)) {
id = RS_RES_ID;
} else {
id = LT_RES_ID;
}
((ImageView)result).setImageDrawable(context.getResources().getDrawable(id));//TODO: might be NPE
} else {
Log.e("ListItem::getNextView()", "unknown view internal identificator");
}
}
return result;
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/textList"
android:background="@color/colorDivider">
</LinearLayout>