How to set images for all list items - java

I didnt know how to set images for all list view item in same image in this tutorial link : https://www.codeproject.com/Articles/507651/Customized-Android-ListView-with-Image-and-Text if i change xml datasource in snows into my default image it will not no appear in output blank display so i need to where did make change in coding part to set all list for one image

In BinderDataClass remove following code:
String uri = "drawable/"+ weatherDataCollection.get(position).get(KEY_ICON);
int imageResource = vi.getContext().getApplicationContext().getResources().getIdentifier( uri, null, vi.getContext().getApplicationContext().getPackageName());
Drawable image = vi.getContext().getResources().getDrawable(imageResource); holder.tvWeatherImage.setImageDrawable(image);
If you want to change the image shown by default you can define it changing src property of ImageView in the list item xml file named list_row.xml
<ImageView
android:id="#+id/list_image"
android:contentDescription="#string/app_name"
android:layout_width="60dip"
android:layout_height="60dip"
android:src="#drawable/sunny" />

Related

How to change Button app:icon property programitically

I have a button with centralized icon+text, and I need to change the app:icon and android:text properties when some event occurred. I know that there is setText() method to change the text, but is there a way to change the icon?
XML:
<Button
android:id="#+id/bottom_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="#dimen/default_margin"
android:layout_marginVertical="#dimen/bottom_bar_content_vertical_margin"
android:backgroundTint="#color/light_green"
android:text="#string/next"
android:textAllCaps="false"
app:icon="#drawable/ic_baseline_next_plan_24"
app:iconGravity="textStart" />
This is a function that is called after appropriate event, and I need to change icon in that function. icon and text are ids of desirable drawable and string:
private void setBottomButton(int icon, int text) {
button.setText(getString(text));
}
You can use the methods:
setIcon
setIconResource
Example:
button.setIcon(drawable)
button.setIconResource(iconId)
Here the doc.
If you check the docs, you'll see the code equivalent for each XML attribute.
Check this link : enter link description here
Searching for drawableLeft shows:
android:drawableLeft:
setCompoundDrawablesWithIntrinsicBounds(Drawable,Drawable,Drawable,Drawable)

CardView.setRadius() is not working when assigned programmatically

So in my program, I want to generate CardViews dynamically on a predefined Layout that I intend to place inside a LinearLayout with horizontal orientation, which is inside a horizontal ScrollView. Everything in the code works fine except:
cv.setRadius(Tools.convertDpToPx(context,5));
[cv is a CardView Object]
[Tools.convertDpToPx(context,float) resides in Tools as static function and returns translated values in Pixels from DP]
Tried getting cv.getRadius() to check if my values are getting assigned, and they are.
Does anyone have an idea why the setRadius() is not working?
IMPLEMENTATION OF CODE
CardView cv = new CardView(context);
// Set external card view wrapper(cv) properties
CardView.LayoutParams cvlp=new CardView.LayoutParams(Tools.convertDpToPx(context,155),Tools.convertDpToPx(context,200));
cvlp.leftMargin=Tools.convertDpToPx(context,10);
cv.setLayoutParams(cvlp);
cv.setBackground(new ColorDrawable(Color.parseColor("#002038")));
cv.setPreventCornerOverlap(false);
cv.setRadius(Tools.convertDpToPx(context,5));
//And more elements added to Card View Layout
cv.setId(View.generateViewId());
Adding a Background or Background Color to a CardView will remove Rounded Corners.
My solution: add a LinearLayout(or other) inside the Cardview ,change backgroundColor of LinearLayout instead using setBackgroundColor
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="12dp"
>
<LinearLayout
android:id="#+id/video_card_duration_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
...
</LinearLayout>
</androidx.cardview.widget.CardView>
in java code
linearLayout.setBackgroundColor(SurfaceColors.SURFACE_2.getColor(context));

Equivalent of html img src in android

I am showing a link in an Android layout as follows:
<TextView
android:id="#+id/linkable_text”
android:layout_width="match_parent"
android:layout_height="match_parent"
android:autoLink="web"
/>
I also do: text.setMovementMethod(LinkMovementMethod.getInstance());
This works but I want to navigate to a different URL than the one displayed in my TextView (I add it dynamically).
I mean the link in the UI shows: file.html but when I press the link I would like to navigate to a url like: http://IP/path/file.html
How can I do that without having to show the whole URL in my TextView
Try this, and let me know what happen..
TextView textView =(TextView)findViewById(R.id.textView);
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href='http://www.google.com'> Google </a>";
textView.setText(Html.fromHtml(text));

Do not show images of ImageView in real devices

I want show image in ImageView, but don't show it. I use XML code and Java code but don't show. show in simulator but in real devices don't show. tested on LG G2, HTC One X, Samsung Galaxy S3.
my xml code :
<ImageView
android:id="#+id/sms_dialog_header"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:layout_alignParentTop="true"
android:scaleType="centerCrop"
android:background="#drawable/show_sms_header" />
my java code :
Dialog_Header_Img = (ImageView) findViewById(R.id.sms_dialog_header);
Dialog_Header_Img.setImageResource(R.drawable.show_sms_header);
I used to be separated from each.
Please tell me the solution
First of all you should set image in xml by code:
android:src="#drawable/show_sms_header"
not by android:background, well you can set background to color or other image but your main image you should set by android:src
If you changing something about your image, leave first line in your code that you show, and delete second, if setting image is only thing you set, then you can delete both, because you set source of image in xml.
The "src" attribute should be set to your drawable if you want it to be "centerCrop" correctly.
Check this out :
<ImageView
android:id="#+id/sms_dialog_header"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:layout_alignParentTop="true"
android:scaleType="centerCrop"
android:src="#drawable/show_sms_header" />
Make sure that your file, called "show_sms_header", is in your drawable ( /res/drawable) directory.

Setting margin on an ImageView

I'm trying to set the imageview's layout_marginTop to one value for different density/screen sizes. In my values-mdpi folder I have the following line in dimensions.xml
<dimen name="marginTop">10dp</dimen>
In the MainActivity
ImageView image = (ImageView) findViewById(R.id.s_image);
But there is no setmargin method for imageview. Is there a way to do this?
You don't need to do that in code, you can do it in your XML file where the image view is defined. See this page for more details.
<TextView
android:layout_height="#dimen/textview_height"
android:layout_width="#dimen/textview_width"
android:textSize="#dimen/font_size"/>
You're on the right track. It's probably easiest to refer to your dimension value within the xml (rather than set this up in java code).
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginTop="#dimen/yourMarginTopValue" />
Try try to put android:adjustViewBounds="true" to
It's probably better to do it in XML since you seem to already have the ImageView defined in XML.
However, the layout_* XML attributes refer to the LayoutParams of the parent layout, not the view itself. To change them in code, access them with getLayoutParams(), do your modifications and call requestLayout() to schedule a re-layout pass. For example:
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams)imageView.getLayoutParams();
lp.topMargin = 123;
imageView.requestLayout();

Categories