Restructure applistitem:

* Move it to the top right corner
* Don't let the app name overlap it
* Ellipsize version names to leave space for name
* Summary can now take two lines if it needs them
* Installed versions are now bold
This commit is contained in:
Daniel Martí 2013-12-25 22:46:46 +01:00
parent f3b247dc81
commit e3789631ba
2 changed files with 50 additions and 27 deletions

View File

@ -4,7 +4,7 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="3dp"
android:paddingBottom="5dp"
android:paddingBottom="4dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:baselineAligned="false" >
@ -44,6 +44,15 @@
</LinearLayout>
<TextView android:id="@+id/status"
android:singleLine="true"
android:ellipsize="end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="3dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true" />
<TextView android:id="@+id/name"
android:textSize="18sp"
android:textStyle="bold"
@ -51,33 +60,26 @@
android:ellipsize="marquee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/status"
android:layout_toRightOf="@id/icon" />
<TextView android:id="@+id/summary"
android:singleLine="true"
android:maxLines="2"
android:ellipsize="end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:layout_toRightOf="@id/icon" />
<TextView android:id="@+id/status"
android:textSize="12sp"
android:singleLine="true"
android:ellipsize="end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/icon"
android:layout_below="@id/summary" />
<TextView android:id="@+id/license"
android:textSize="12sp"
android:singleLine="true"
android:ellipsize="end"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:layout_alignParentRight="true"
android:layout_alignBaseline="@id/status" />
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" />
</RelativeLayout>

View File

@ -4,10 +4,13 @@ import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import android.text.SpannableString;
import android.text.style.StyleSpan;
import android.graphics.Bitmap;
import org.fdroid.fdroid.DB;
@ -133,20 +136,38 @@ abstract public class AppListAdapter extends BaseAdapter {
return convertView;
}
private String getVersionInfo(DB.App app) {
if (app.installedVersion != null) {
if (app.toUpdate) {
return app.installedVersion + " -> " + app.curApk.version;
}
return app.installedVersion;
} else {
int numav = app.apks.size();
if (numav == 1) {
return mContext.getString(R.string.n_version_available, numav);
}
return mContext.getString(R.string.n_versions_available, numav);
String ellipsize(String input, int maxLength) {
if (input == null || input.length() < maxLength+1) {
return input;
}
return input.substring(0, maxLength) + "";
}
private SpannableString getVersionInfo(DB.App app) {
if (app.curApk == null) {
return null;
}
if (app.installedVersion == null) {
return new SpannableString(
ellipsize(app.curApk.version, 12));
}
SpannableString span;
String cur;
if (app.toUpdate) {
cur = ellipsize(app.installedVersion, 8);
span = new SpannableString(
cur + " -> " + ellipsize(app.curApk.version, 8));
} else {
cur = ellipsize(app.installedVersion, 12);
span = new SpannableString(cur);
}
span.setSpan(new StyleSpan(Typeface.BOLD), 0, cur.length(), 0);
return span;
}
private void layoutIcon(ImageView icon, boolean compact) {