I want to the show Full size of the image in the alert dialog, When I click on the imagebutton in the android project. How can I do?
In xml file -
<?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="match_parent"
android:orientation="vertical">
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="#+id/my_image"/>
</LinearLayout>
In activity show your custom dialog box using below code -
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View dialogView = inflater.inflate(R.layout.dialog, null);
builder.setView(dialogView)
.setPositiveButton(R.string.create, new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialog, int which) {
}
}).create().show();
transaction to new fragment with a imageview in match parent.
Related
I want to display an AlertDialog with an image. But the image may change depending on some circumstances.
This is the code I'm using for the AlertDialog:
AlertDialog.Builder alertadd = new AlertDialog.Builder(wheel.this);
LayoutInflater factory = LayoutInflater.from(wheel.this);
final View view = factory.inflate(R.layout.alert, null);
alertadd.setView(view);
alertadd.setTitle("Alert Dialog Title");
alertadd.setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int sumthin) {
}
});
alertadd.show();
And this is the alert.xml:
<?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="match_parent">
<ImageView
android:id="#+id/dialog_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="#drawable/image"
android:paddingLeft="5dp"
android:paddingRight="5dp"/>
</LinearLayout>
Is there any way to programmatically access the imageView within the XML file so I can change the image? Or is there a better way to do that?
You can get a reference of ImageView by calling findViewById on your view and then call setImageResource on it :
LayoutInflater factory = LayoutInflater.from(wheel.this);
final View view = factory.inflate(R.layout.alert, null);
// change the ImageView image source
final ImageView dialogImageView = (ImageView) view.findViewById(R.id.dialog_imageview);
dialogImageView.setImageResource(R.drawable.your_image);
alertadd.setView(view);
alertadd.setTitle("Alert Dialog Title");
alertadd.setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int sumthin) {
}
});
alertadd.show();
I have a large string and I need to add 2 hyperlinks. I did it, but it`s not clickable.
String:
<string name="freeasa"><![CDATA[<b><font color=#cc0022>text<font color=#2266bb> text </font></b> <br> text <a href=\'http://google.com\'>navigate to google.com</a><br><b><font color=#2266bb> text</font><font color=#cc0022> text </font></b><br> text <a href=\'http://yahoo.com\'> yahoo link<\a> ]]></string>
AlertDialog:
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(getResources().getString(R.string.add_info));
builder.setMessage(Html.fromHtml(getResources().getString(R.string.freeasa)))
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
}).show();
There are hyperlinks, but they are not clickable. How to fix it ?
try custom alert dialog below way
LayoutInflater li = LayoutInflater.from(MainActivity.this);
View promptsView = li.inflate(R.layout.prompts, null);
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setView(promptsView);
final TextView userInput = (TextView) promptsView
.findViewById(R.id.textView);
userInput.setMovementMethod(LinkMovementMethod.getInstance());
userInput.setText(Html.fromHtml(getResources().getString(R.string.about_body)));
builder.setTitle(getResources().getString(R.string.app_name));
// builder.setMessage(Html.fromHtml(getResources().getString(R.string.about_body)))
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
}).show();
prompts.xml
<?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="match_parent"
android:orientation="vertical"
android:padding="10dip">
<TextView
android:id="#+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
make sure your string is correct and links are working
Use this to set an heperlink to a TextView:
TextView website = new TextView(this);
website.setText("http://www.google.com");
Linkify.addLinks(website, Linkify.ALL);
Hope it helps
I have created a custom Alert Dialog with a ExpandableListView inside it. The ExpandableListView childs are Checkboxes.
I am trying to set the event listener whenever the user clicks on one of the checkboxes but it does not work. I can select and unselect the checkboxes in the custom alert dialog but the event handler does not work. Can anyone help me?
Code to create the alert dialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select the route or segments");
LinearLayout layout = (LinearLayout) findViewById(R.id.custom_alert_dialog);
LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.custom_alert_dialog_routes, null);
ExpandableListView listView = (ExpandableListView) dialoglayout.findViewById(R.id.routesListView);
ExpandableListAdapter listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);
// setting list adapter
listView.setAdapter(listAdapter);
listView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
#Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
Toast.makeText(getApplicationContext(), "Clicked the checkbox", Toast.LENGTH_LONG).show();
Log.d("Click", "I have clicked a checkbox.");
return false;
}
});
builder.setView(dialoglayout);
builder.setInverseBackgroundForced(true);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog dialog = builder.create();
dialog.show();
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="New CheckBox"
android:id="#+id/expandedListItem"
android:textColor="#000000"
android:focusable="false"
android:layout_marginLeft="20dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"/>
</LinearLayout>
I have tried with the android:focusable and without it and it did not work.
Try using setOnItemClickListener instead of setOnChildClickListener.
I am running into an issue and don't know the best way to use a set of drawables inside an AlertDialog. The AlertDialog is presented when a user presses a button and is prompted to choose from a list of drawables.
Currently it shows Buttons I have placed in a dialog_view layout when the dialog is created. Ideally I would like to be able to use some type of listview, but if that is not possible I would like to be able to handle the selection/pressing of an item when inside the AlertDialog.
What should I do to handle any actions from within the AlertDialog?
DIALOGFRAGMENT
public class PicturePickerFragment extends DialogFragment {
ArrayList<Integer> imageList = new ArrayList<Integer>();
#Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// fill an array with selected images
String title = "Picture";
imageList.add(R.drawable.barbershop);
imageList.add(R.drawable.wedding);
imageList.add(R.drawable.meeting);
imageList.add(R.drawable.barbershop);
// return alertdialog
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.dialog_view, null))
.setTitle(R.string.event_type)
.setPositiveButton(R.string.select_picture,
new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialog,
int which) {
// call the method on the parent activity when
// user click the positive button
}
});
return builder.create();
}
}
DIALOG VIEW
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="#+id/btn_baby"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="#drawable/baby"
android:text="Baby Shower" />
<Button
android:id="#+id/btn_baking"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="#drawable/baking"
android:text="Baking" />
<Button
android:id="#+id/btn_barber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="#drawable/barbershop"
android:text="Barbershop" />
</LinearLayout>
You can use some ListAdapter such as an ArrayAdapter where you present a drawable for every item in the list and then use the adapter when you build the AlertDialog:
builder.setAdapter(myAdapter, new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialog, int which) {
//which is the position of the item clicked
}
})
Edit: This is an example that would work with your imageList:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setAdapter(new ArrayAdapter<Integer>(getActivity(), R.layout.dialog_image, imageList) {
#Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
LayoutInflater inflater = getActivity().getLayoutInflater();
view = inflater.inflate(R.layout.dialog_image, parent, false);
} else {
view = convertView;
}
ImageView imageView = (ImageView) view.findViewById(R.id.image);
int resId = getItem(position);
imageView.setImageResource(resId);
return view;
}
}, new OnClickListener() {
#Override
public void onClick(DialogInterface dialog, int which) {
Log.i("Dialog", "selected position " + which);
}
});
return builder.create();
where R.layout.dialog_image contains an ImageView with id android:id="#+id/image" as root element. For example:
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="center"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:minHeight="?attr/listPreferredItemHeight" >
</ImageView>
I'm trying to show a NumberPicker in a dialog in order to let the user select a value between 0 and 10. It's my second day spent trying to make it work.
This is what I have:
fragment_number_picker (layout):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/numberPickerFragmentLinearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<NumberPicker
android:id="#+id/numberPickerInFragment"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:orientation="horizontal" />
</LinearLayout>
DialogFragment definition:
public class NumberPickerCustomDialog extends DialogFragment {
Context context;
public NumberPickerCustomDialog() {}
#Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
context = getActivity().getApplicationContext();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
LayoutInflater li = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Inflate and set the layout for the dialog
View view = li.inflate(R.layout.fragment_number_picker, null);
builder
// Set view:
.setView(view)
// Add action buttons
.setPositiveButton(R.string.accept, new DialogInterface.OnClickListener(){
#Override
public void onClick(DialogInterface dialog, int id) {
// Accept number
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
NumberPicker np = (NumberPicker) view.findViewById(R.id.numberPickerInFragment);
np.setMaxValue(200);
np.setMinValue(0);
np.setFocusable(true);
np.setFocusableInTouchMode(true);
return builder.create();
}
}
Call from the main Activity:
public void openNumberPicker(){
FragmentManager fm = getSupportFragmentManager();
NumberPickerCustomDialog npc = new NumberPickerCustomDialog();
npc.show(fm, "fragment_number_picker");
}
I'm getting an InvocationTargetException and I can't make it work.
Any ideas? Thanks!
Try changing the context you're using:
context = getActivity().getApplicationContext();
Instead, you need the activity's own context:
context = getActivity();