about_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="14dp"
android:orientation="vertical">
<Button
style="@style/AboutText"
android:id="@+id/google_play"
android:text="@string/about_google_play"/>
<Button
style="@style/AboutText"
android:id="@+id/contact"
android:text="@string/about_contact"/>
<TextView
style="@style/AboutText"
android:id="@+id/sources"
android:text="@string/about_sources"/>
</LinearLayout>
</ScrollView>
styles.xml
<style name="AboutText" parent="android:Widget.TextView">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">@dimen/about_dialog_text_size</item>
<item name="android:layout_marginBottom">@dimen/about_dialog_text_margin</item>
</style>
dimens.xml
<dimen name="about_dialog_text_size">16sp</dimen>
<dimen name="about_dialog_text_margin">14dp</dimen>
MainActivity实现点击
case R.id.opt_about:
AboutDialog.show(getFragmentManager());
return true;
AboutDialog
package com.jotterpro.notes;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.FragmentManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
public class AboutDialog extends DialogFragment {
private static final String FRAGMENT_TAG = AboutDialog.class.getSimpleName();
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setTitle(R.string.app_name)
.setView(createView())
.setNegativeButton(R.string.common_close, null)
.create();
}
public View createView() {
final Context context = getActivity();
final LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.about_dialog, null);
// version
// google play
view.findViewById(R.id.google_play).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openGooglePlay();
}
});
// email
view.findViewById(R.id.contact).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendFeedback();
}
});
// sources
final TextView sourcesInfo = (TextView) view.findViewById(R.id.sources);
Linkify.addLinks(sourcesInfo, Linkify.WEB_URLS);
return view;
}
private void openGooglePlay() {
final Intent browserIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("app应用地址" + getActivity().getPackageName()));
startActivity(browserIntent);
}
private void sendFeedback() {
final Context context = getActivity();
final Intent emailIntent = new Intent(Intent.ACTION_SENDTO,
Uri.fromParts("mailto", "邮件地址", null));
final String subject = context.getString(R.string.app_name) + " feedback";
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, getTextForFeedback(context));
startActivity(Intent.createChooser(emailIntent, context.getString(R.string.about_contact)));
}
private String getTextForFeedback(Context context) {
return context.getString(R.string.about_contact_do_not_remove);
}
public static void show(FragmentManager fm) {
final AboutDialog dialog = new AboutDialog();
dialog.show(fm, FRAGMENT_TAG);
}
}
效果图