尝试以行格式列出文本和图像,并在标签中显示总共5个。我使用布局参数为每行文本和图像添加填充,但文本和图像之间的差距太大。
我无法弄清楚如何使用此代码编辑文本和图像之间的空间我还在学习
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));
}
}
}
}
适配器
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>