I have a custom preference for showing icon with title and summary. But I don't know why its title has a larger text size compared to the normal preferences (built in one). Here are the source and layout xml of my custom preference. If you need more info, please let me know. Thank You.
public class IconPreferenceScreen extends Preference {
public Drawable mIcon;
private ImageView mImageView;
public IconPreferenceScreen(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.preferenceStyle);
}
public IconPreferenceScreen(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setLayoutResource(R.layout.preference_icon);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.IconPreferenceScreen, defStyle, android.R.attr.preferenceStyle);
mIcon = a.getDrawable(R.styleable.IconPreferenceScreen_iconPref);
a.recycle();
}
public IconPreferenceScreen(Context context) {
this(context, null);
setLayoutResource(R.layout.preference_icon);
}
#Override
public void onBindView(View view) {
super.onBindView(view);
mImageView = (ImageView) view.findViewById(R.id.icon);
if (mImageView != null && mIcon != null) {
mImageView.setImageDrawable(mIcon);
}
}
public void setIcon(Drawable icon) {
if (mImageView != null && icon != null) {
mImageView.setImageDrawable(icon);
}
}
#Override
protected View onCreateView(ViewGroup parent) {
View layout= super.onCreateView(parent);
layout.setVisibility(View.VISIBLE);
return layout;
}
}
Layout file here
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+android:id/widget_frame"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingRight="?android:attr/scrollbarSize">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="18dip"
android:layout_marginRight="6dip"
android:layout_marginTop="6dip"
android:layout_marginBottom="6dip"
android:layout_weight="1">
<TextView android:id="#+android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
<TextView android:id="#+android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#android:id/title"
android:layout_alignLeft="#android:id/title"
android:textAppearance="?android:attr/textAppearanceSmall"
android:maxLines="2" />
</RelativeLayout>
<ImageView
android:id="#+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginRight="6dip"
android:layout_gravity="center" />
</LinearLayout>
Your problem is likely that your title uses android:attr/textAppearanceLarge. Digging through the Android source code, the preferences_child.xml resource instead uses ?android:attr/textAppearanceMedium.
Related
I am trying to mimic the new Oreo Timepicker
I have created the layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:id="#+id/hour_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="#+id/hour_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="2"
android:textAlignment="center"
android:focusable="true"/>
<TextView
android:id="#+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="hour" />
</LinearLayout>
<TextView
android:id="#+id/textView3"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical"
android:paddingBottom="10dp"
android:text=":"
android:textSize="24sp" />
<LinearLayout
android:id="#+id/minute_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="#+id/minute_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="2"
android:textAlignment="center" />
<TextView
android:id="#+id/textView5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="minute" />
</LinearLayout>
<Spinner
android:id="#+id/ampm_spinner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_weight="1" />
I also created the supporting class(setters and getters not included below:
public class ManualTimePicker extends LinearLayout {
private final static String TAG = "ManualTimePicker():";
TextView hour;
TextView minute;
Spinner ampm;
private Integer fieldInputType;
public ManualTimePicker(Context context) {
super(context);
init(context);
}
public ManualTimePicker(Context context, #Nullable AttributeSet
attributeSet) {
super(context, attributeSet);
TypedArray attrs = context.obtainStyledAttributes
(attributeSet, R.styleable.ManualTimePicker, 0, 0);
fieldInputType = attrs.getInt
(R.styleable.ManualTimePicker_H_android_text,InputType.TYPE_CLASS_NUMBER);
attrs.recycle();
init(context);
}
public ManualTimePicker
(Context context, #Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
public ManualTimePicker
(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context);
}
private void init(final Context context) {
View.inflate(context, R.layout.manual_time_picker, this);
setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);
hour = findViewById(R.id.hour_input);
minute = findViewById(R.id.minute_input);
hour.setText("7");
minute.setText("00");
hour.setFocusable(true);
hour.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View view) {
Log.d(TAG, "Hour field is clicked");
hour.requestFocus();
}
});
hour.setInputType(fieldInputType);
ampm = findViewById(R.id.ampm_spinner);
final ArrayAdapter methodAdapter =
ArrayAdapter.createFromResource(getContext(),
R.array.ampm,android.R.layout.simple_spinner_item);
methodAdapter.setDropDownViewResource
(android.R.layout.simple_spinner_dropdown_item);
ampm.setAdapter(methodAdapter);
SimpleDateFormat dateFormat = new SimpleDateFormat("aa");
String formattedDate = dateFormat.format(new Date());
if(formattedDate.equals("AM"))
ampm.setSelection(0);
else
ampm.setSelection(1);
}
#Override
public boolean onTouchEvent(final MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
return performClick();
}
return true;
}
Now I have the problem that the EditTexts does not work at all - when I click them, they gain focus for a second, I see a blink from the cursor and then the go "dark" again. requestFocus() does not work either.
How can I make those two edittext act like just normal edit texts? I implemented getters and setters, so it won't be a problem to get and set the value, but I don't see them acting properly.
Thanks!
change this to
TextView hour;
TextView minute;
hour = findViewById(R.id.hour_input);
minute = findViewById(R.id.minute_input);
this.
EditText hour;
EditText minute;
hour = (EditText)findViewById(R.id.hour_input);
minute = (EditText)findViewById(R.id.minute_input);
I removed
setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);
And that solved the issues. It seems that I didn't read properly the tutorial I was using.
Here is what it does - Can someone explain descendantFocusability = afterDescendants?
How can I make these pictures stay the same size?
I tried scaleType and ajustbounds but neither one works.
Look at image below
Custom ListView
<ImageView
android:id="#+id/imageView13"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:scaleType="centerCrop"
android:layout_alignParentStart="true"/>
Listview
<ListView
android:id="#+id/ListFoto1"
android:layout_width="125dp"
android:layout_height="125dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="#+id/imageView14" />
<ListView
android:id="#+id/ListFoto2"
android:layout_width="125dp"
android:layout_height="125dp"
android:layout_alignBottom="#+id/ListFoto1"
android:layout_below="#+id/determinate"
android:layout_toEndOf="#+id/ListFoto1"
android:layout_toRightOf="#+id/ListFoto1" />
<ListView
android:id="#+id/ListFoto3"
android:layout_width="125dp"
android:layout_height="125dp"
android:layout_alignBottom="#+id/ListFoto2"
android:layout_below="#+id/determinate"
android:layout_toEndOf="#+id/ListFoto2"
android:layout_toRightOf="#+id/ListFoto2" />
I do that using custom list CustomList.java class and a single layout list_single.xml. Try this.
MainActivity.java file look like this.
CustomList cl; //Create cl as global variable
String[] imagename={"image1","image2"}; //create image name array or do that dynamically
Integer[] imageId={"R.drawable.image1","R.drawable.image2"}; //create image locations array or do that dynamically
ListView list;
//inside oncreate method
list = (ListView) getActivity().findViewById(R.id.Listview1);
cl = new CustomList(getActivity(), imagename, imageId); //initialize cl
list.setAdapter(cl);
CustomList.java file look like this
public class CustomList extends ArrayAdapter<String>{
private final Activity context;
private final String[] imagename;
private final Integer[] imageId;
public CustomList(Activity context, String[] imagename, Integer[] imageId) {
super(context, R.layout.list_single, web);
this.context = context;
this.imagename = imagename;
this.imageId = imageId;
}
#Override
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView= inflater.inflate(R.layout.list_single, null, true);
ImageView imageView = (ImageView) rowView.findViewById(R.id.img);
txtTitle.setText(imagename[position]);
imageView.setImageResource(imageId[position]);
return rowView;
}
}
list_single.xml layout file look like this
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableRow
android:paddingBottom="2dp"
android:paddingTop="2dp">
<ImageView
android:id="#+id/img"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#android:color/holo_green_light"
android:paddingBottom="1dp"
android:paddingLeft="1dp"
android:paddingRight="1dp"
android:paddingTop="1dp" />
<TextView
android:id="#+id/txt"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:gravity="center_vertical"
android:paddingLeft="5dp"
android:textColor="#android:color/background_dark"
android:textSize="15sp" />
</TableRow>
</TableLayout>
or you can set initial width and hight in imageview
<ImageView
android:id="#+id/imageView13"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:scaleType="centerCrop"
android:layout_alignParentStart="true"/>
One of the ways to achieve this is by controlling the aspect ratio through a custom view. Something like this
/**
* Created by victoraldir on 11/05/2017.
*/
import android.content.Context;
import android.util.AttributeSet;
public class DynamicImageView extends android.support.v7.widget.AppCompatImageView {
private static final float ASPECT_RATIO = 1.5f;
public DynamicImageView(Context context) {
super(context);
}
public DynamicImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DynamicImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
#Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = Math.round(width * ASPECT_RATIO);
setMeasuredDimension(width, height);
}
}
Then you use your custom ImageView in your XML
<com.my.package.DynamicImageView
android:id="#+id/thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:transitionName="#string/transition_image"
tools:layout_width="200dp" />
Java
DeviceSwitch.setLayoutResource(R.layout.settings);
DeviceSwitch.setKey(CategoryKey);
DeviceSwitch.setDefaultValue(true);
DeviceSwitch.setEnabled(true);
DeviceSwitch.setSelectable(true);
DevicesShowScreen.addPreference(DeviceSwitch);
if this code run --> DeviceSwitch.setLayoutResource(R.layout.settings);
Switch not checked in Android 6.0
This string --> DeviceSwitch.setCheked(true);
Not work in Android 6.0
in Android 7.0 switch preference from layout checked normal
Layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/listPreferredItemHeightSmall"
android:gravity="center_vertical"
android:clipToPadding="false">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:layout_marginStart="15dp">
<TextView android:id="#android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?attr/textAppearanceListItem"
android:ellipsize="marquee" />
<TextView android:id="#android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#android:id/title"
android:layout_alignStart="#android:id/title"
android:maxLines="10"
android:ellipsize="end" />
</RelativeLayout>
<Switch
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:focusable="false"
android:clickable="false"
android:gravity="center"
android:layout_marginEnd="15dp"
android:id="#android:id/switch_widget"
android:checked="false" />
</LinearLayout>
It's because sdk 23 uses com.android.internal.R.id.switchWidget identifier instead of com.android.internal.R.id.switch_widget
Workaround is quite simple. Just inherit SwitchPreference class and duplicate some code:
public class MySwitchPreference extends SwitchPreference {
private final Listener mListener = new Listener();
private class Listener implements CompoundButton.OnCheckedChangeListener {
#Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (!callChangeListener(isChecked)) {
// Listener didn't like it, change it back.
// CompoundButton will make sure we don't recurse.
buttonView.setChecked(!isChecked);
return;
}
MySwitchPreference.this.setChecked(isChecked);
}
}
public MySwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public MySwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public MySwitchPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MySwitchPreference(Context context) {
super(context);
}
#Override
protected void onBindView(View view) {
super.onBindView(view);
View checkableView = view.findViewById(R.id.switch_widget);
if (checkableView != null && checkableView instanceof Checkable) {
if (checkableView instanceof Switch) {
final Switch switchView = (Switch) checkableView;
switchView.setOnCheckedChangeListener(null);
}
((Checkable) checkableView).setChecked(isChecked());
if (checkableView instanceof Switch) {
final Switch switchView = (Switch) checkableView;
switchView.setTextOn(getSwitchTextOn());
switchView.setTextOff(getSwitchTextOff());
switchView.setOnCheckedChangeListener(mListener);
}
}
}
}
And of course don't forget to replace android:id="#android:id/switch_widget" to android:id="#+id/switch_widget" in your widget switcher layout.
In fact i know how to open an activity by clicking on a button
But i can't do it in frame layout
i try this code but it didn't help me.
FrameLayout ff=(FrameLayout)findViewById(R.id.btn);
ff.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent intent=new Intent(listActivity.this,bookActivity.class);
startActivity(intent);
}
});
that's all
EDITES:
this my activity_main :
<LinearLayout
android:id="#+id/linbook"
android:layout_margin="15dp"
android:layout_toRightOf="#+id/linjozve"
android:layout_width="130dp"
android:layout_height="180dp"
android:orientation="vertical">
<FrameLayout
android:id="#+id/ketabbtn"
android:layout_width="130dp"
android:layout_height="130dp">
<ImageButton
android:layout_weight="1"
android:id="#+id/btntopright"
android:layout_width="130dp"
android:layout_height="130dp"
android:background="#drawable/rgreen"/>
<ImageButton
android:background="#drawable/book"
android:layout_gravity="center"
android:layout_width="80dp"
android:layout_height="80dp" />
</FrameLayout>
<TextView
android:layout_marginTop="15dp"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="book"/>
</LinearLayout>
thanks
Try to set android:clickable in the xml.
If that doesn't work try to create a custom layout:
By default, onInterceptTouchEvent returns false. So include following code and use this CustomClickableFrameLayout instead of framelayout
public class CustomClickableFrameLayout extends FrameLayout {
private OnClickListener mOnClickListener;
#Override
public void setOnClickListener(OnClickListener l) {
super.setOnClickListener(l);
mOnClickListener = l;
}
#Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return mOnClickListener != null;
}
// Standard constructors — just pass everything
public CustomClickableFrameLayout (final Context context) {
super(context);
}
public CustomClickableFrameLayout (final Context context, final AttributeSet attrs) {
super(context, attrs);
}
public CustomClickableFrameLayout (final Context context, final AttributeSet attrs, final int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
#TargetApi(Build.VERSION_CODES.LOLLIPOP)
public CustomClickableFrameLayout (final Context context, final AttributeSet attrs, final int defStyleAttr, final int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
The problem is it is quite hard to click on a FrameLayout if it is covered by other views. In your case, the framelayout and the imagebutton have the same size 130x130. This explains why the touch cannot reach the layout.
To make sure you can click it, add some padding between the layout and its childs. (I reduced the size of its child)
<FrameLayout
android:padding="10dp"
android:id="#+id/ketabbtn"
android:layout_width="130dp"
android:layout_height="130dp">
<ImageButton
android:layout_weight="1"
android:id="#+id/btntopright"
android:layout_width="120dp"
android:layout_height="120dp"
android:background="#drawable/rgreen"/>
<ImageButton
android:background="#drawable/book"
android:layout_gravity="center"
android:layout_width="80dp"
android:layout_height="80dp" />
</FrameLayout>
Also, you used wrong ID. So change this:
FrameLayout ff=(FrameLayout)findViewById(R.id.btn);
To this:
FrameLayout ff=(FrameLayout)findViewById(R.id.ketabbtn);
So you can click the padding space to trigger the onClick event.
I am trying to make a composite view by extending RelativeLayout It consists of three widgets. An ImageView , a ProgressBar and a TextView . But for some reason I am unable to see the ImageView and TextView. Attaching code below. Any suggestions?
public class ProgressView extends RelativeLayout {
#InjectView(R.id.ivItemPic)
ImageView ivItemPic;
#InjectView(R.id.tvMessage)
TextView tvMessage;
#InjectView(R.id.pbLoading)
ProgressBar pbLoading;
int defColor = 0xff669900;
public ProgressView(Context context) {
super(context);
init(context,null, 0);
}
public ProgressView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context,attrs, 0);
}
public ProgressView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context,attrs, defStyle);
}
public void init(Context context, AttributeSet attrs, int defStyleAttr) {
inflate(context, R.layout.component_progress_view, this);
ButterKnife.inject(this);
TypedArray aTypedArray = context.obtainStyledAttributes(attrs, R.styleable.ProgressView, defStyleAttr, 0);
final int textSize = aTypedArray.getDimensionPixelSize(
R.styleable.ProgressView_pvTextSize,
dipsToPix(R.dimen.font_medium));
final int textColor = aTypedArray.getColor(R.styleable.ProgressView_pvTextColor,defColor);
final Drawable imgSrc = aTypedArray.getDrawable(R.styleable.ProgressView_pvImageSrc);
ivItemPic.setImageDrawable(imgSrc);
tvMessage.setTextSize(textSize);
tvMessage.setTextColor(textColor);
aTypedArray.recycle();
}
/**
* Helper method to convert dips to pixels.
*/
private int dipsToPix(float dps) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dps,
getResources().getDisplayMetrics());
}
public void setText(String message) {
tvMessage.setText(message);
}
public void imageVisibility(boolean visible) {
ivItemPic.setVisibility(visible ? VISIBLE : GONE);
}
public void progressIndeterminate(boolean indeterminate) {
pbLoading.setIndeterminate(indeterminate);
}
public void setItemImage(Drawable drawable) {
ivItemPic.setImageDrawable(drawable);
}
public void setItemImageRes(int res) {
ivItemPic.setImageResource(res);
}
The XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ImageView
android:id="#+id/ivItemPic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="#+id/pbLoading"
android:layout_centerHorizontal="true"
android:layout_marginTop="#dimen/activity_vertical_margin"
android:layout_marginBottom="#dimen/activity_vertical_margin"
android:src="#drawable/ic_action_info"/>
<ProgressBar
android:id="#+id/pbLoading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="#dimen/activity_vertical_margin"
android:layout_marginBottom="#dimen/activity_vertical_margin"
android:layout_centerInParent="true"
style="?android:attr/progressBarStyleHorizontal"
android:indeterminate="true"
android:visibility="visible" />
<TextView
android:id="#+id/tvMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#+id/pbLoading"
android:layout_marginTop="#dimen/activity_vertical_margin"
android:layout_marginRight="#dimen/horizontal_margin"
android:layout_marginLeft="#dimen/horizontal_margin"
android:textSize="#dimen/font_medium"
android:textColor="#color/grey_normal"
android:gravity="center"
android:text="Message"/>
The Layout
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:errorview="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#color/background_color"
tools:context="com.mobility.ui.SyncFragment">
<com.mobility.customviews.SuccessView
android:id="#+id/svSuccess"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
android:gravity="center"
app:svText="Success"
app:svTextColor="#android:color/holo_green_dark"/>
<tr.xip.errorview.ErrorView
android:id="#+id/evError"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
errorview:ev_errorSubtitle="#string/err_conn"
errorview:ev_errorTitle="#string/oops"
errorview:ev_showRetryButton="true"
errorview:ev_showSubtitle="true"
errorview:ev_showTitle="true"
android:gravity="center"
android:visibility="gone"
android:paddingLeft="#dimen/horizontal_margin"
android:paddingRight="#dimen/horizontal_margin"
errorview:ev_retryButtonTextColor="#color/error_retry"/>
<com.mobility.customviews.ProgressView
android:id="#+id/progressView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:pvText="ZzZZ"/>