Anti-Feature icons

This commit is contained in:
Michael Pöhn 2020-06-25 20:39:00 +00:00 committed by Hans-Christoph Steiner
parent f2a625aa75
commit a4c3df6c24
16 changed files with 346 additions and 117 deletions

View File

@ -53,6 +53,7 @@ import org.fdroid.fdroid.data.RepoProvider;
import org.fdroid.fdroid.installer.Installer;
import org.fdroid.fdroid.privileged.views.AppDiff;
import org.fdroid.fdroid.privileged.views.AppSecurityPermissions;
import org.fdroid.fdroid.views.appdetails.AntiFeaturesListingView;
import org.fdroid.fdroid.views.main.MainActivity;
import java.io.File;
@ -379,9 +380,10 @@ public class AppDetailsRecyclerViewAdapter
final TextView whatsNewView;
final TextView descriptionView;
final TextView descriptionMoreView;
final View antiFeaturesSectionView;
final TextView antiFeaturesLabelView;
final TextView antiFeaturesView;
final View antiFeaturesWarningView;
final AntiFeaturesListingView antiFeaturesListingView;
final View buttonLayout;
final Button buttonPrimaryView;
final Button buttonSecondaryView;
@ -402,9 +404,10 @@ public class AppDetailsRecyclerViewAdapter
whatsNewView = (TextView) view.findViewById(R.id.whats_new);
descriptionView = (TextView) view.findViewById(R.id.description);
descriptionMoreView = (TextView) view.findViewById(R.id.description_more);
antiFeaturesSectionView = view.findViewById(R.id.anti_features_section);
antiFeaturesLabelView = (TextView) view.findViewById(R.id.label_anti_features);
antiFeaturesView = (TextView) view.findViewById(R.id.text_anti_features);
antiFeaturesWarningView = view.findViewById(R.id.anti_features_warning);
antiFeaturesListingView = view.findViewById(R.id.anti_features_full_listing);
buttonLayout = view.findViewById(R.id.button_layout);
buttonPrimaryView = (Button) view.findViewById(R.id.primaryButtonView);
buttonSecondaryView = (Button) view.findViewById(R.id.secondaryButtonView);
@ -545,23 +548,10 @@ public class AppDetailsRecyclerViewAdapter
}
}
});
if (app.antiFeatures != null && app.antiFeatures.length > 0) {
StringBuilder sb = new StringBuilder();
for (String af : app.antiFeatures) {
String afdesc = descAntiFeature(af);
sb.append("<p><a href=\"https://f-droid.org/wiki/page/Antifeature:")
.append(af)
.append("\">")
.append(afdesc)
.append("</a></p>");
}
antiFeaturesView.setText(trimTrailingNewlines(Html.fromHtml(sb.toString())));
antiFeaturesView.setMovementMethod(LinkMovementMethod.getInstance());
} else {
antiFeaturesView.setVisibility(View.GONE);
}
antiFeaturesListingView.setApp(app);
updateAntiFeaturesWarning();
buttonPrimaryView.setText(R.string.menu_install);
buttonPrimaryView.setVisibility(versions.isEmpty() ? View.GONE : View.VISIBLE);
buttonSecondaryView.setText(R.string.menu_uninstall);
@ -664,41 +654,16 @@ public class AppDetailsRecyclerViewAdapter
}
private void updateAntiFeaturesWarning() {
if (app.antiFeatures == null || TextUtils.isEmpty(antiFeaturesView.getText())) {
antiFeaturesLabelView.setVisibility(View.GONE);
antiFeaturesView.setVisibility(View.GONE);
if (app.antiFeatures == null || app.antiFeatures.length == 0) {
antiFeaturesSectionView.setVisibility(View.GONE);
} else if (descriptionIsExpanded) {
antiFeaturesWarningView.setVisibility(View.GONE);
antiFeaturesLabelView.setVisibility(View.VISIBLE);
antiFeaturesListingView.setVisibility(View.VISIBLE);
} else {
antiFeaturesLabelView.setVisibility(descriptionIsExpanded ? View.VISIBLE : View.GONE);
antiFeaturesView.setVisibility(descriptionIsExpanded ? View.VISIBLE : View.GONE);
antiFeaturesWarningView.setVisibility(descriptionIsExpanded ? View.GONE : View.VISIBLE);
}
}
private String descAntiFeature(String af) {
switch (af) {
case "Ads":
return itemView.getContext().getString(R.string.antiadslist);
case "Tracking":
return itemView.getContext().getString(R.string.antitracklist);
case "NonFreeNet":
return itemView.getContext().getString(R.string.antinonfreenetlist);
case "NonFreeAdd":
return itemView.getContext().getString(R.string.antinonfreeadlist);
case "NonFreeDep":
return itemView.getContext().getString(R.string.antinonfreedeplist);
case "UpstreamNonFree":
return itemView.getContext().getString(R.string.antiupstreamnonfreelist);
case "NonFreeAssets":
return itemView.getContext().getString(R.string.antinonfreeassetslist);
case "DisabledAlgorithm":
return itemView.getContext().getString(R.string.antidisabledalgorithmlist);
case "KnownVuln":
return itemView.getContext().getString(R.string.antiknownvulnlist);
case "NoSourceSince":
return itemView.getContext().getString(R.string.antinosourcesince);
default:
return af;
antiFeaturesWarningView.setVisibility(View.VISIBLE);
antiFeaturesLabelView.setVisibility(View.GONE);
antiFeaturesListingView.setVisibility(View.GONE);
}
}
}

View File

@ -0,0 +1,160 @@
/*
* Copyright (C) 2019 Michael Pöhn <michael.poehn@fsfe.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.fdroid.fdroid.views.appdetails;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.data.App;
public class AntiFeaturesListingView extends RecyclerView {
public AntiFeaturesListingView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public void setApp(final App app) {
setHasFixedSize(true);
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
setLayoutManager(layoutManager);
swapAdapter(new RecyclerView.Adapter<AntiFeatureItemViewHolder>() {
@NonNull
@Override
public AntiFeatureItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.listitem_antifeaturelisting, null);
return new AntiFeatureItemViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull AntiFeatureItemViewHolder holder, int position) {
final String antiFeatureName = app.antiFeatures[position];
holder.antiFeatureIcon.setBackgroundDrawable(
ContextCompat.getDrawable(getContext(), antiFeatureIcon(antiFeatureName)));
holder.antiFeatureText.setText(
getAntiFeatureDescriptionText(holder.antiFeatureText.getContext(), antiFeatureName));
holder.entireView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_VIEW);
if (Build.VERSION.SDK_INT >= 21) {
i.setFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
} else {
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
}
i.setData(Uri.parse("https://f-droid.org/docs/Anti-Features#" + antiFeatureName));
getContext().startActivity(i);
}
});
}
@Override
public int getItemCount() {
return app == null || app.antiFeatures == null ? 0 : app.antiFeatures.length;
}
}, false);
}
class AntiFeatureItemViewHolder extends RecyclerView.ViewHolder {
private final View entireView;
private final View antiFeatureIcon;
private final TextView antiFeatureText;
AntiFeatureItemViewHolder(View itemView) {
super(itemView);
entireView = itemView;
antiFeatureIcon = itemView.findViewById(R.id.anti_feature_icon);
antiFeatureText = itemView.findViewById(R.id.anti_feature_text);
}
}
public static String getAntiFeatureDescriptionText(Context context, String antiFeatureName) {
switch (antiFeatureName) {
case "Ads":
return context.getString(R.string.antiadslist);
case "Tracking":
return context.getString(R.string.antitracklist);
case "NonFreeNet":
return context.getString(R.string.antinonfreenetlist);
case "NonFreeAdd":
return context.getString(R.string.antinonfreeadlist);
case "NonFreeDep":
return context.getString(R.string.antinonfreedeplist);
case "UpstreamNonFree":
return context.getString(R.string.antiupstreamnonfreelist);
case "NonFreeAssets":
return context.getString(R.string.antinonfreeassetslist);
case "DisabledAlgorithm":
return context.getString(R.string.antidisabledalgorithmlist);
case "KnownVuln":
return context.getString(R.string.antiknownvulnlist);
case "NoSourceSince":
return context.getString(R.string.antinosourcesince);
default:
return antiFeatureName;
}
}
public static @DrawableRes int antiFeatureIcon(String antiFeatureName) {
switch (antiFeatureName) {
case "Ads":
return R.drawable.ic_antifeature_ads;
case "Tracking":
return R.drawable.ic_antifeature_tracking;
case "NonFreeNet":
return R.drawable.ic_antifeature_nonfreenet;
case "NonFreeAdd":
return R.drawable.ic_antifeature_nonfreeadd;
case "NonFreeDep":
return R.drawable.ic_antifeature_nonfreedep;
case "UpstreamNonFree":
return R.drawable.ic_antifeature_upstreamnonfree;
case "NonFreeAssets":
return R.drawable.ic_antifeature_nonfreeassets;
case "DisabledAlgorithm":
return R.drawable.ic_antifeature_disabledalgorithm;
case "KnownVuln":
return R.drawable.ic_antifeature_knownvuln;
case "NoSourceSince":
return R.drawable.ic_antifeature_nosourcesince;
default:
return R.drawable.ic_cancel;
}
}
}

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M32.56,11.19a3,3 0,0 0,-3.07 0.44h0a44.91,44.91 0,0 1,-13.55 8.07,2.67 2.67,0 0,0 -2.51,-2.08H8.76a2.84,2.84 0,0 0,-2.64 3.06v6A3.08,3.08 0,0 0,7.66 29.5c0.28,7 2.5,11.65 4.05,12.8a2.65,2.65 0,0 0,1.61 0.47,7.75 7.75,0 0,0 3.17,-0.89c1.55,-0.79 2.33,-1.67 2.32,-2.64A6.52,6.52 0,0 0,18 36.92,25 25,0 0,1 16.5,33a14.59,14.59 0,0 1,-0.44 -4.38,1.28 1.28,0 0,0 0,-0.37c2.13,0.41 7,1.91 13.44,7.49a3.13,3.13 0,0 0,2 0.73,2.63 2.63,0 0,0 1.1,-0.24c0.62,-0.28 1.66,-1.08 1.66,-3.19V14.34A3.13,3.13 0,0 0,32.56 11.19ZM8.71,20.69a0.78,0.78 0,0 1,0.13 -0.47h4.5a0.78,0.78 0,0 1,0.13 0.47v6a0.78,0.78 0,0 1,-0.13 0.47H8.85a0.78,0.78 0,0 1,-0.13 -0.47ZM16.13,39.1a5.6,5.6 0,0 1,-2.92 1.09c-0.63,-0.58 -2.62,-4.2 -2.94,-10.41h3.18A17.66,17.66 0,0 0,14 33.62,27.5 27.5,0 0,0 15.65,38C15.82,38.36 16,38.8 16.13,39.1ZM31.63,33a1.67,1.67 0,0 1,-0.14 0.83,0.47 0.47,0 0,1 -0.31,-0.09C24,27.52 18.51,26 16.07,25.6V22.37c2.44,-0.64 8.75,-3.41 15.09,-8.75h0a0.42,0.42 0,0 1,0.3 -0.07s0.16,0.24 0.16,0.8Z"/>
<path android:fillColor="#FF000000" android:pathData="M40.86,13.17 L44,6.11a1.3,1.3 0,0 0,-2.37 -1l-4.72,10.7h5.27l-3.62,7A1.3,1.3 0,1 0,40.83 24l5.56,-10.82Z"/>
</vector>

View File

@ -0,0 +1,7 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M36.24,30.79l-2.18,-2.33A10,10 0,0 0,30.4 26a9.64,9.64 0,0 0,-1.28 -2.77A1.3,1.3 0,1 0,27 24.63a7.38,7.38 0,0 1,0.42 0.73,6.59 6.59,0 0,0 -4.63,1.71 6.51,6.51 0,0 0,-2 4.22,7.7 7.7,0 0,1 -1.48,-1.21l-2.18,-2.33A7.76,7.76 0,0 1,16 26.16,6.37 6.37,0 0,0 22.36,20a7.38,7.38 0,0 1,0.69 0.46,1.3 1.3,0 1,0 1.59,-2.05A9.65,9.65 0,0 0,22 16.92a10,10 0,0 0,-2.25 -3.83l-2.18,-2.33C14.26,7.24 9.18,6.62 6.23,9.37a6.74,6.74 0,0 0,-2 5.53,9.63 9.63,0 0,0 2.64,5.84L9,23.07a9.94,9.94 0,0 0,3.91 2.59,10.05 10.05,0 0,0 2.26,3.84l2.18,2.33A10,10 0,0 0,21 34.34a10,10 0,0 0,2.33 4.1l2.18,2.33a9.4,9.4 0,0 0,6.75 3.11,6.58 6.58,0 0,0 4.55,-1.72 6.74,6.74 0,0 0,2 -5.53A9.63,9.63 0,0 0,36.24 30.79ZM19.77,19.11a4.2,4.2 0,0 1,-1.22 3.46,4.18 4.18,0 0,1 -3.42,1s0,0 0,-0.06A4.2,4.2 0,0 1,16.35 20a4.2,4.2 0,0 1,3.41 -1S19.77,19.09 19.77,19.11ZM8.73,19a7,7 0,0 1,-2 -4.25A4.2,4.2 0,0 1,8 11.26a4,4 0,0 1,2.8 -1,6.84 6.84,0 0,1 4.85,2.3l2.18,2.33a7.7,7.7 0,0 1,1.11 1.57,6.4 6.4,0 0,0 -6.39,6.19 7.69,7.69 0,0 1,-1.63 -1.31ZM24.52,29a4.23,4.23 0,0 1,3.59 -1,3.94 3.94,0 0,1 -4.81,4.31A4.17,4.17 0,0 1,24.52 29ZM35.07,40.3C33.17,42 29.74,41.48 27.43,39l-2.18,-2.33a7.68,7.68 0,0 1,-1.2 -1.73h0.06A6.39,6.39 0,0 0,30.68 29a7.7,7.7 0,0 1,1.49 1.22l2.18,2.33a7,7 0,0 1,2 4.25A4.2,4.2 0,0 1,35.07 40.26Z"/>
<path android:fillColor="#FF000000" android:pathData="M41.09,19.1a1.59,1.59 0,0 0,-1.87 -1.21l-4.57,1a1.54,1.54 0,0 0,-0.57 0.24h0a1.58,1.58 0,0 0,1.27 2.83l4.57,-1A1.55,1.55 0,0 0,41.09 19.1Z"/>
<path android:fillColor="#FF000000" android:pathData="M33.93,16.3l0.06,-0.05 3.48,-3.1a1.58,1.58 0,0 0,-2 -2.41l-0.06,0.05 -3.48,3.1a1.58,1.58 0,0 0,2 2.41Z"/>
<path android:fillColor="#FF000000" android:pathData="M27.14,14.49A1.54,1.54 0,0 0,29 13.34h0l1,-4.56a1.59,1.59 0,0 0,-1.15 -1.91,1.55 1.55,0 0,0 -1.49,0.4h0A1.54,1.54 0,0 0,27 8l-1,4.56A1.59,1.59 0,0 0,27.14 14.49Z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M37.55,32.13a1.27,1.27 0,0 0,-0.43 0v-1.5h7.94a1.3,1.3 0,0 0,0 -2.59L37.12,28.04L37.12,26.71a1.24,1.24 0,0 0,0.18 0l0.25,0c3.44,-0.67 7.38,-5 8.61,-9.4a1.3,1.3 0,1 0,-2.5 -0.7c-1,3.7 -4.35,7.06 -6.55,7.53L37.11,20.58a1.3,1.3 0,0 0,-1.3 -1.3L33.54,19.28c0,-1.14 0,-3.88 0,-5a9.24,9.24 0,0 0,-18.47 0,1.3 1.3,0 1,0 2.59,0 6.64,6.64 0,0 1,13.29 0c0,1.08 0,3.81 0,5L13.14,19.28a1.3,1.3 0,0 0,-1.3 1.3v3.57c-2.2,-0.49 -5.51,-3.84 -6.53,-7.53a1.3,1.3 0,1 0,-2.5 0.7C4,21.75 8,26.06 11.43,26.72l0.25,0a1.24,1.24 0,0 0,0.17 0L11.85,28L3.65,28a1.3,1.3 0,1 0,0 2.59h8.2v1.5a1.26,1.26 0,0 0,-0.42 0c-3.44,0.67 -7.38,5 -8.61,9.4a1.3,1.3 0,1 0,2.5 0.7c1,-3.69 4.33,-7 6.53,-7.53v2.84a1.3,1.3 0,0 0,1.3 1.3L35.82,38.8a1.3,1.3 0,0 0,1.3 -1.3L37.12,34.69c2.2,0.48 5.52,3.83 6.55,7.53a1.3,1.3 0,1 0,2.5 -0.7C44.93,37.1 41,32.79 37.55,32.13ZM34.55,36.24L14.44,36.24L14.44,21.88L34.52,21.88Z"/>
<path android:fillColor="#FF000000" android:pathData="M24.5,28.82m-2.44,0a2.44,2.44 0,1 1,4.88 0a2.44,2.44 0,1 1,-4.88 0"/>
</vector>

View File

@ -0,0 +1,7 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M32.83,26.35H29.65a2.68,2.68 0,0 0,-3 -2.27h-0.18c-2.4,0 -3.35,1.82 -3.43,4.5s1.54,4.54 3.43,4.5a2.73,2.73 0,0 0,3 -2.44h3.56c-0.59,3.34 -3,5.29 -6.53,5.3 -3.94,0 -6.8,-3.29 -6.8,-7.36 0,-4.34 2.85,-7.36 6.8,-7.36H27c2.46,0 5.81,1.77 5.81,5.13Z"/>
<path android:fillColor="#FF000000" android:pathData="M16.28,23.15h0A1.87,1.87 0,0 1,18.14 25h0a1.87,1.87 0,0 1,-1.86 1.87h0A1.87,1.87 0,0 1,14.42 25h0A1.87,1.87 0,0 1,16.28 23.15Z"/>
<path android:fillColor="#FF000000" android:pathData="M16.28,29.7h0a1.87,1.87 0,0 1,1.86 1.87h0a1.87,1.87 0,0 1,-1.86 1.87h0a1.87,1.87 0,0 1,-1.86 -1.87h0A1.87,1.87 0,0 1,16.28 29.7Z"/>
<path android:fillColor="#FF000000" android:pathData="M11,41.81a1.5,1.5 0,0 1,-1.5 -1.5L9.5,16.24a1.5,1.5 0,0 1,1.5 -1.5h8.71l0,-0.82A4.54,4.54 0,0 1,17.9 10.6,3.62 3.62,0 0,1 19,8a7,7 0,0 1,5.08 -1.81c5.65,0 6.35,3.1 6.38,4.42A4.61,4.61 0,0 1,28.76 14v0.79h8.19a1.5,1.5 0,0 1,1.5 1.49l0,7.6a1.3,1.3 0,0 1,-1.29 1.3h0a1.3,1.3 0,0 1,-1.3 -1.29l0,-6.51h-8.4a1.3,1.3 0,0 1,-1.3 -1.3v-2.7a1.3,1.3 0,0 1,0.55 -1.06c0.49,-0.35 1.17,-1.1 1.15,-1.59 0,-1.25 -1.32,-1.89 -3.8,-1.9a4.62,4.62 0,0 0,-3.22 1,1.08 1.08,0 0,0 -0.36,0.73c0,0.88 1.09,1.55 1.1,1.55a1.3,1.3 0,0 1,0.65 1.05L22.4,16a1.3,1.3 0,0 1,-1.29 1.37h-9L12.11,39.21l23.74,0c0,-0.33 0,-0.74 0,-1.21 0,-1.43 0,-3.4 0,-5.17a1.3,1.3 0,0 1,1.29 -1.3h0a1.3,1.3 0,0 1,1.3 1.29c0,1.79 0,3.77 0,5.21 0,0.72 0,1.3 0,1.67 0,0.07 0,0.32 0,0.55 -0.11,1.45 -1.09,1.56 -1.39,1.56l-26,0ZM11,39.22h0ZM37,39.22h0Z"/>
</vector>

View File

@ -0,0 +1,7 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M17.08,18.06h0a1.87,1.87 0,0 1,1.86 1.87h0a1.87,1.87 0,0 1,-1.86 1.87h0a1.87,1.87 0,0 1,-1.86 -1.87h0A1.87,1.87 0,0 1,17.08 18.06Z"/>
<path android:fillColor="#FF000000" android:pathData="M17.08,26.28h0a1.87,1.87 0,0 1,1.86 1.87h0A1.87,1.87 0,0 1,17.08 30h0a1.87,1.87 0,0 1,-1.86 -1.87h0A1.87,1.87 0,0 1,17.08 26.28Z"/>
<path android:fillColor="#FF000000" android:pathData="M33.18,22H30a2.68,2.68 0,0 0,-3 -2.27h-0.18c-2.4,0 -3.35,1.82 -3.43,4.5s1.54,4.54 3.43,4.5a2.73,2.73 0,0 0,3 -2.44h3.56c-0.59,3.34 -3,5.29 -6.53,5.3 -3.94,0 -6.8,-3.29 -6.8,-7.36 0,-4.34 2.85,-7.36 6.8,-7.36h0.43c2.46,0 5.81,1.77 5.81,5.13Z"/>
<path android:fillColor="#FF000000" android:pathData="M39.29,7.11h-30A3.85,3.85 0,0 0,6.44 8.37h0v0a3.59,3.59 0,0 0,-0.9 2.37L5.54,37.63a3.75,3.75 0,0 0,3.8 3.68h30a3.75,3.75 0,0 0,3.8 -3.68L43.14,10.79A3.75,3.75 0,0 0,39.29 7.11ZM39.48,9.71a1.86,1.86 0,1 1,-1.85 1.86A1.85,1.85 0,0 1,39.48 9.71ZM39.48,17.93a1.86,1.86 0,1 1,-1.85 1.86A1.85,1.85 0,0 1,39.48 17.94ZM9.06,38.34h0a1.87,1.87 0,0 1,0 -3.75h0a1.87,1.87 0,0 1,0 3.75ZM9.06,30.05h0a1.87,1.87 0,0 1,0 -3.75h0a1.87,1.87 0,0 1,0 3.75ZM9.06,21.76h0a1.87,1.87 0,0 1,0 -3.75h0a1.87,1.87 0,0 1,0 3.75ZM9.06,13.47h0a1.87,1.87 0,0 1,0 -3.75h0a1.87,1.87 0,0 1,0 3.75ZM36,38.71L12.23,38.71L12.23,9.7L36,9.7ZM39.51,38.33a1.87,1.87 0,1 1,1.86 -1.87A1.87,1.87 0,0 1,39.48 38.34ZM39.51,30.04a1.87,1.87 0,1 1,1.86 -1.87A1.87,1.87 0,0 1,39.48 30Z"/>
</vector>

View File

@ -0,0 +1,8 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M9.38,17.97a1.49,1.46 0,1 0,2.98 0a1.49,1.46 0,1 0,-2.98 0z"/>
<path android:fillColor="#FF000000" android:pathData="M34.73,9.72a1.3,1.3 0,0 0,-1.3 1.3V33.07l-7.19,-5.52a12,12 0,1 0,-1.67 2l8.29,6.37a1.27,1.27 0,0 0,0.56 0.23v6.4a1.3,1.3 0,1 0,2.59 0V11A1.3,1.3 0,0 0,34.73 9.72ZM16.33,30.27a9.33,9.33 0,1 1,9.33 -9.33A9.34,9.34 0,0 1,16.33 30.27Z"/>
<path android:fillColor="#FF000000" android:pathData="M41.67,9.72a1.3,1.3 0,0 0,-1.3 1.3V42.54a1.3,1.3 0,1 0,2.59 0V11A1.3,1.3 0,0 0,41.67 9.72Z"/>
<path android:fillColor="#FF000000" android:pathData="M9.38,23.81a1.49,1.46 0,1 0,2.98 0a1.49,1.46 0,1 0,-2.98 0z"/>
<path android:fillColor="#FF000000" android:pathData="M20.08,22.43A1.74,1.74 0,0 1,18.13 24h0a1.93,1.93 0,0 1,-1.38 -0.59,3.12 3.12,0 0,1 -0.78,-2.32c0.06,-1.94 0.8,-2.92 2.2,-2.92h0.18a1.68,1.68 0,0 1,1.83 1.44v0.07h2.28v-0.09c0,-2.34 -2.36,-3.48 -4,-3.5h-0.28c-2.72,0 -4.62,2.05 -4.62,5A5.23,5.23 0,0 0,15 24.77a4.41,4.41 0,0 0,3.14 1.29h0a4.19,4.19 0,0 0,4.43 -3.6l0,-0.1H20.09Z"/>
</vector>

View File

@ -0,0 +1,13 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M13.65,31.74L13,31.74a10.63,10.63 0,0 1,0 -21.25C15.18,7.25 19.22,4.1 23.66,3.9h0c6.23,-0.23 11.08,3.49 13.09,10a8.91,8.91 0,0 1,0 17.82L13.65,31.72ZM13.21,13.06A8,8 0,0 0,13 29.14L36.69,29.14a6.32,6.32 0,0 0,-0.23 -12.64l-0.54,0 -1.11,0.11 -0.27,-1.08c-0.72,-2.82 -3.19,-9.35 -10.76,-9.07h0c-3.23,0.14 -7,2.61 -9.06,6l-0.42,0.67 -0.78,-0.06Z"/>
<path android:fillColor="#FF000000" android:pathData="M15.33,14.71h0a1.87,1.87 0,0 1,1.86 1.87h0a1.87,1.87 0,0 1,-1.86 1.87h0a1.87,1.87 0,0 1,-1.86 -1.87h0A1.87,1.87 0,0 1,15.33 14.71Z"/>
<path android:fillColor="#FF000000" android:pathData="M15.33,20.77h0a1.87,1.87 0,0 1,1.86 1.87h0a1.87,1.87 0,0 1,-1.86 1.87h0a1.87,1.87 0,0 1,-1.86 -1.87h0A1.87,1.87 0,0 1,15.33 20.77Z"/>
<path android:fillColor="#FF000000" android:pathData="M36.27,39.92a1.3,1.3 0,0 1,-1.1 -2l2.28,-3.68a1.3,1.3 0,1 1,2.2 1.37l-2.28,3.68A1.3,1.3 0,0 1,36.27 39.92Z"/>
<path android:fillColor="#FF000000" android:pathData="M27.92,43.41a1.3,1.3 0,0 1,-1.1 -2l2.28,-3.68a1.3,1.3 0,1 1,2.2 1.37L29,42.79A1.3,1.3 0,0 1,27.92 43.41Z"/>
<path android:fillColor="#FF000000" android:pathData="M22.17,39.92a1.3,1.3 0,0 1,-1.1 -2l2.28,-3.68a1.3,1.3 0,1 1,2.2 1.37l-2.28,3.68A1.3,1.3 0,0 1,22.17 39.92Z"/>
<path android:fillColor="#FF000000" android:pathData="M13.83,43.41a1.3,1.3 0,0 1,-1.1 -2L15,37.75a1.3,1.3 0,1 1,2.2 1.37l-2.28,3.68A1.3,1.3 0,0 1,13.83 43.41Z"/>
<path android:fillColor="#FF000000" android:pathData="M8.64,39.84a1.3,1.3 0,0 1,-1.1 -2l2.28,-3.68A1.3,1.3 0,0 1,12 35.55L9.74,39.23A1.3,1.3 0,0 1,8.64 39.84Z"/>
<path android:fillColor="#FF000000" android:pathData="M30.28,17.37H27.56A2.3,2.3 0,0 0,25 15.43h-0.15c-2.06,0 -2.87,1.56 -2.94,3.85s1.32,3.89 2.94,3.85A2.34,2.34 0,0 0,27.48 21h3.05a5.28,5.28 0,0 1,-5.59 4.54c-3.38,0 -5.82,-2.82 -5.82,-6.3 0,-3.72 2.44,-6.3 5.82,-6.3h0.37C27.42,13 30.28,14.5 30.28,17.37Z"/>
<path android:fillColor="#FF000000" android:pathData="M24.93,25.63a5.61,5.61 0,0 1,-4 -1.64,6.56 6.56,0 0,1 -1.86,-4.7 6.65,6.65 0,0 1,1.65 -4.57,5.67 5.67,0 0,1 4.21,-1.77h0.37c2,0 5,1.47 5,4.44v0H27.52v0a2.23,2.23 0,0 0,-2.42 -1.91h-0.23c-1.85,0 -2.82,1.28 -2.9,3.81a4.07,4.07 0,0 0,1 3,2.55 2.55,0 0,0 1.87,0.78A2.3,2.3 0,0 0,27.44 21v0h3.14v0.05a5.32,5.32 0,0 1,-5.64 4.57ZM25.14,13h-0.2c-3.4,0 -5.78,2.57 -5.78,6.26A6.48,6.48 0,0 0,21 23.93a5.53,5.53 0,0 0,3.93 1.62h0a5.24,5.24 0,0 0,5.54 -4.45h-3a2.39,2.39 0,0 1,-2.64 2.09h-0.05a2.63,2.63 0,0 1,-1.88 -0.8,4.15 4.15,0 0,1 -1.05,-3.1c0.08,-2.59 1.08,-3.9 3,-3.9h0.22a2.34,2.34 0,0 1,2.5 1.94h2.65c0,-2.88 -3,-4.27 -4.94,-4.31h-0.16Z"/>
</vector>

View File

@ -0,0 +1,6 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M42,31.65L40.6,31.65L40.6,21.46a1.24,1.24 0,0 0,0 -0.26,16.08 16.08,0 0,0 -32.16,0.05 1.31,1.31 0,0 0,0 0.21v10.2L6.9,31.66a1.3,1.3 0,0 0,-1.3 1.3v7.36a1.3,1.3 0,0 0,1.3 1.3L42,41.62a1.3,1.3 0,0 0,1.3 -1.3L43.3,32.95A1.3,1.3 0,0 0,42 31.65ZM11,21.65a1.3,1.3 0,0 0,0 -0.18,13.49 13.49,0 0,1 27,0 1.24,1.24 0,0 0,0 0.24v10L11,31.71ZM40.74,39L8.2,39L8.2,34.25L40.74,34.25Z"/>
<path android:fillColor="#FF000000" android:pathData="M28.27,16.23a1.3,1.3 0,0 0,-1.82 1.85l3.9,3.82 -3.9,3.82a1.3,1.3 0,0 0,1.82 1.85l4.84,-4.75a1.3,1.3 0,0 0,0 -1.85Z"/>
<path android:fillColor="#FF000000" android:pathData="M22.52,16.25a1.3,1.3 0,0 0,-1.83 0L15.84,21a1.3,1.3 0,0 0,0 1.85l4.84,4.75a1.3,1.3 0,0 0,1.82 -1.85L18.6,21.9l3.9,-3.82A1.3,1.3 0,0 0,22.52 16.25Z"/>
</vector>

View File

@ -0,0 +1,8 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M6.32,34.68a2.83,2.83 0,0 1,-2.54 -1.4,3.12 3.12,0 0,1 0.12,-3.16L9.68,20.3l0.25,-0.45c0.72,-1.31 1.25,-1.49 2.82,-1.5h0l20.2,-0.06h0c1.48,0 2,0.2 2.73,1.43l0.29,0.49L42.12,30a3.07,3.07 0,0 1,0.17 3.14,2.88 2.88,0 0,1 -2.58,1.44l-33.38,0.06ZM12.32,20.96 L12.24,21.11 11.95,21.62L6.13,31.44A0.62,0.62 0,0 0,6 32c0,0.08 0.24,0.09 0.29,0.09h0L39.71,32c0.08,0 0.26,0 0.31,-0.11a0.57,0.57 0,0 0,-0.1 -0.52l-6.11,-9.82c-0.14,-0.22 -0.25,-0.41 -0.34,-0.57l-0.07,-0.12L33,20.86l-20.2,0.06Z"/>
<path android:fillColor="#FF000000" android:pathData="M22.94,18.19a8,8 0,0 0,-8.2 7.89A8,8 0,0 0,22.94 34a8,8 0,0 0,8.2 -7.89A8,8 0,0 0,22.94 18.19ZM22.94,31.12a5,5 0,1 1,5.26 -5A5.16,5.16 0,0 1,22.94 31.12Z"/>
<path android:fillColor="#FF000000" android:pathData="M22.94,24h0a2.1,2.1 0,0 1,2.14 2.05h0a2.1,2.1 0,0 1,-2.14 2.05h0a2.1,2.1 0,0 1,-2.14 -2.05h0A2.1,2.1 0,0 1,22.94 24Z"/>
<path android:fillColor="#FF000000" android:pathData="M42.91,29.16a6.72,6.72 0,0 1,-3.12 -1c-0.71,-0.39 -4.24,-2.45 -4.23,-4.5s3.48,-4 4.18,-4.42c2.92,-1.6 3.94,-0.94 4.28,-0.73 1.24,0.79 1.48,3.31 1.47,5.28 0,2.77 -0.51,4.49 -1.49,5.1A1.89,1.89 0,0 1,42.91 29.16ZM42.47,26.8ZM38.21,23.62a10.84,10.84 0,0 0,4.39 2.91,13.3 13.3,0 0,0 0,-5.75A10.64,10.64 0,0 0,38.21 23.62ZM38.13,23.77ZM38.13,23.47ZM42.87,20.75h0ZM42.47,20.52Z"/>
<path android:fillColor="#FF000000" android:pathData="M42.82,42.72H3.15A1.3,1.3 0,0 1,2 40.79l3.49,-6.2a2.72,2.72 0,0 1,-1.74 -1.3,3.12 3.12,0 0,1 0.12,-3.16L9.68,20.3l0.25,-0.45c0.72,-1.31 1.25,-1.49 2.82,-1.5h1.91L21.51,6.17a1.3,1.3 0,0 1,1.12 -0.66,1.28 1.28,0 0,1 1.13,0.64L30.85,18.3h2.1c1.52,0 2.06,0.18 2.77,1.43 0.08,0.14 0.17,0.3 0.29,0.49L42.12,30a3.07,3.07 0,0 1,0.17 3.14,2.8 2.8,0 0,1 -2,1.38l3.62,6.2a1.3,1.3 0,0 1,-1.12 1.95ZM5.37,40.13H40.56L37,34A1.3,1.3 0,0 1,38.1 32h1.61c0.08,0 0.26,0 0.31,-0.11a0.57,0.57 0,0 0,-0.1 -0.52l-6.11,-9.82c-0.14,-0.23 -0.25,-0.41 -0.34,-0.57l-0.07,-0.12h-3.3A1.31,1.31 0,0 1,29 20.26L22.66,9.42 16.54,20.28a1.3,1.3 0,0 1,-1.13 0.66H12.29l-0.08,0.15 -0.29,0.51L6.13,31.44A0.62,0.62 0,0 0,6 32c0,0.08 0.24,0.09 0.29,0.09H7.68A1.3,1.3 0,0 1,8.81 34Z"/>
</vector>

View File

@ -0,0 +1,7 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M15.72,22.64a1.86,1.87 0,1 0,3.72 0a1.86,1.87 0,1 0,-3.72 0z"/>
<path android:fillColor="#FF000000" android:pathData="M15.72,29.24a1.86,1.87 0,1 0,3.72 0a1.86,1.87 0,1 0,-3.72 0z"/>
<path android:fillColor="#FF000000" android:pathData="M20.28,26.12c0,4.06 2.85,7.37 6.8,7.36 3.49,0 5.94,-2 6.53,-5.3H30a2.73,2.73 0,0 1,-3 2.44c-1.89,0 -3.51,-1.7 -3.43,-4.5s1,-4.5 3.43,-4.5h0.18a2.68,2.68 0,0 1,3 2.27h3.18c0,-3.36 -3.35,-5.08 -5.81,-5.13h-0.43C23.13,18.76 20.28,21.78 20.28,26.12Z"/>
<path android:fillColor="#FF000000" android:pathData="M24.375,8.9277A1.3,1.3 0,0 0,23.7793 9.0801L5.4492,18.8008A1.3,1.3 0,0 0,6.6699 21.0898L10.1992,19.2109L10.1992,36.6699A3.07,3.07 0,0 0,13.3594 39.6699L35.6406,39.6699A3.07,3.07 0,0 0,38.8008 36.6699L38.8008,19.4609L42.3301,21.3594A1.3,1.3 0,0 0,43.5605 19.0801L43.5605,19.0703L25,9.0801A1.3,1.3 0,0 0,24.375 8.9277zM24.3691,11.6992L36.2207,18.0703L36.2109,36.6699C36.2109,36.8399 35.9706,37.0293 35.6406,37.0293L13.3594,37.0293C13.0394,37.0293 12.7891,36.8399 12.7891,36.6699L12.7891,17.9492L12.7891,17.8496L24.3691,11.6992z"/>
</vector>

View File

@ -7,14 +7,15 @@
android:layout_margin="@dimen/details_activity_padding"
app:cardBackgroundColor="?attr/appDetailsCardBackground"
app:cardCornerRadius="3dp"
app:cardElevation="3dp">
app:cardElevation="3dp"
android:animateLayoutChanges="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:orientation="vertical">
android:paddingBottom="8dp">
<RelativeLayout
android:layout_width="match_parent"
@ -35,22 +36,22 @@
android:id="@+id/icon"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginRight="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:scaleType="fitCenter"
android:transitionName="@string/transition_app_item_icon"
android:src="@drawable/ic_repo_app_default" />
android:src="@drawable/ic_repo_app_default"
android:transitionName="@string/transition_app_item_icon" />
<!-- Name, Author (optional), Updated date -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginTop="8dp"
android:layout_toEndOf="@id/icon"
android:layout_toRightOf="@id/icon"
@ -102,32 +103,32 @@
android:id="@+id/progress_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:text="@string/downloading"
android:layout_alignParentLeft="true"
android:contentDescription="@string/downloading"
android:focusable="true"
android:text="@string/downloading"
android:textAppearance="@style/TextAppearance.AppCompat.Small" />
<TextView
android:id="@+id/progress_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/progress_cancel"
android:layout_toStartOf="@id/progress_cancel"
tools:text="500%"
android:textAppearance="@style/TextAppearance.AppCompat.Small" />
android:layout_toLeftOf="@id/progress_cancel"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
tools:text="500%" />
<ProgressBar
android:id="@+id/progress_bar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@id/progress_label"
android:layout_toLeftOf="@id/progress_cancel"
android:layout_toStartOf="@id/progress_cancel" />
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_toStartOf="@id/progress_cancel"
android:layout_toLeftOf="@id/progress_cancel" />
</RelativeLayout>
<!-- Install, Uninstall, Update, Open buttons -->
@ -136,10 +137,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/icon_and_name"
android:paddingBottom="4dp"
android:clipToPadding="false"
android:visibility="visible"
android:gravity="end">
android:gravity="end"
android:paddingBottom="4dp"
android:visibility="visible">
<android.support.v7.widget.AppCompatButton
android:id="@+id/secondaryButtonView"
@ -148,18 +149,18 @@
android:layout_height="wrap_content"
android:layout_weight="0"
android:ellipsize="marquee"
tools:text="Uninstall"/>
tools:text="Uninstall" />
<android.support.v7.widget.AppCompatButton
android:id="@+id/primaryButtonView"
style="@style/DetailsPrimaryButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_weight="0"
android:ellipsize="marquee"
tools:text="Open"/>
tools:text="Open" />
</LinearLayout>
</RelativeLayout>
@ -184,75 +185,73 @@
android:id="@+id/whats_new"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:background="?attr/detailPanel"
android:paddingStart="8dp"
android:paddingLeft="8dp"
android:paddingTop="16dp"
android:paddingEnd="8dp"
android:paddingRight="8dp"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:background="?attr/detailPanel"
tools:text="NEW IN VERSION 1.0.2233\n\nA lot has happened since the last build:\n\n\t• Improved UI\n\t• Bug fixes" />
<TextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:scrollbars="none"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textIsSelectable="true"
tools:text="This is the app description of this awezome app. It can be several lines long, but will be truncated at just a few if it is. A 'read more' button will appear so that you can expand the view and view the full text, if you wish. Yes, it will be blue and beautiful." />
<LinearLayout
android:id="@+id/anti_features_section"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="vertical">
<TextView
android:id="@+id/anti_features_warning"
style="@style/DetailsAntiFeaturesWarningStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="@string/antifeatureswarning"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:drawableStart="?attr/antiFeaturesWarning"
android:drawableLeft="?attr/antiFeaturesWarning"
android:drawablePadding="10dp"
android:gravity="center_vertical" />
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:gravity="center_vertical"
android:text="@string/antifeatureswarning"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/label_anti_features"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:scrollbars="none"
android:text="@string/antifeatures"
android:textStyle="bold"
android:textAllCaps="true"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textStyle="bold" />
<TextView
android:id="@+id/text_anti_features"
<!-- listing of all anti-features -->
<org.fdroid.fdroid.views.appdetails.AntiFeaturesListingView
android:id="@+id/anti_features_full_listing"
android:layout_marginBottom="8dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:scrollbars="none"
tools:text="This app tracks and reports your activity."
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
android:layout_height="wrap_content"/>
</LinearLayout>
<TextView
android:id="@+id/description_more"
@ -262,5 +261,6 @@
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp"
android:text="@string/more" />
</LinearLayout>
</android.support.v7.widget.CardView>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:background="?attr/selectableItemBackground" >
<View
android:id="@+id/anti_feature_icon"
android:backgroundTint="?attr/appDetailsAntiFeatureIconColor"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/anti_feature_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/anti_feature_icon" />
</RelativeLayout>

View File

@ -14,5 +14,6 @@
<attr name="antiFeaturesWarning" format="reference"/>
<attr name="backButtonDrawable" format="reference"/>
<attr name="clearButtonDrawable" format="reference"/>
<attr name="appDetailsAntiFeatureIconColor" format="color"/>
</declare-styleable>
</resources>

View File

@ -25,6 +25,7 @@
<item name="backButtonDrawable">@drawable/ic_back_white_24dp</item>
<item name="clearButtonDrawable">@drawable/ic_close_white_24dp</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
<item name="appDetailsAntiFeatureIconColor">#ffffff</item>
</style>
<style name="AppBaseThemeLight" parent="Theme.AppCompat.Light.NoActionBar">
@ -51,6 +52,7 @@
<item name="backButtonDrawable">@drawable/ic_back_black_24dp</item>
<item name="clearButtonDrawable">@drawable/ic_close_black_24dp</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
<item name="appDetailsAntiFeatureIconColor">#000000</item>
</style>
<style name="AppBaseThemeNight" parent="AppThemeDark">