【问题标题】:How do I open an image by clicking on a text如何通过单击文本打开图像
【发布时间】:2013-12-03 16:25:00
【问题描述】:

我正在制作我的第一个应用程序,我需要一些帮助。

如何通过单击超链接文本打开已在我的应用中预设的图像?

我正在尝试

例如,

“参考Image001”

当用户点击“Image001”这个词时,一个窗口会打开预设图片,当我按下返回按钮时它会关闭。

这是我目前所拥有的

在strings.xml中

<string name="refer">Refer to Image001</string>

在activity_main.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" >

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="match_parent" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:gravity="left"
    android:text="@string/refer" />
</ScrollView>
</LinearLayout>

谢谢

【问题讨论】:

标签: android


【解决方案1】:

您必须有 2 个 TextView。第一个将具有文本:“Refer to”,第二个将具有文本“Image001”。然后你在第二个文本视图上设置一个点击监听器,代码如下:

String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

【讨论】:

  • 别忘了在 textview 中设置 clickable=true :)
【解决方案2】:

您必须首先在 xml 文件中将 Id 设置为您的 textView,如下所示:

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:gravity="left"
android:text="@string/refer" />

然后为您的文本视图设置setOnClickListener,如下代码:

    TextView tv= (TextView) findViewById(R.id.textView1);
    tv.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        //DO you work here
    }
});

onClick 方法中执行此操作后,您可以像以下代码一样调用您的图像

    String url = "http://www.xxx.com";
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse(url));
    startActivity(intent);

【讨论】:

  • 在文本视图中设置 clickable=true
【解决方案3】:

最好的方法是使用DialogFragments。例如,这个类扩展了 DialogFragment 并在 ImageView 中显示了一张图片。

public class MyDialogFragment extends DialogFragment {
    public MyDialogFragment newInstance (Bitmap targetPicture) {
        MyDialogFragment frag = new MyDialogFragment();
        Bundle args = new Bundle();
        args.putExtra("picture", targetPicture);
        frag.setArguments(args);
        return frag;
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.dialogfrag, container, false);
        Bitmap b = (Bitmap) getArguments().getExtra("picture");
        ImageView iv = (ImageView) v.findViewById(R.id.targetImageView);
        iv.setImageBitmap(b);
        return v;
    }

但是,您需要在布局文件夹中定义 dialogfrag.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" >

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/targetImageView" />

</LinearLayout>

最后在你的活动中:

OnClickListener myClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        MyDialogFragment d = MyDialogFragment.newInstance(targetPicture) //replace targetPicture with the picture you want to display
        d.show();
    }
};
TextView tv = (TextView) findViewById(R.id.txt1);
tv.setOnClickListener(myClickListener);

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多