Android - 如果嵌入在DrawerLayout中,则单击时不会突出显示TextView中的链接

时间:2014-07-15 14:03:55

标签: android textview navigation-drawer

我的应用程序基于您在Eclipse中创建新Android应用程序时可以选择的默认导航抽屉活动 我创建的主要片段包含一个带有autoLink的TextView。 Android识别链接,它们是蓝色和带下划线的,但是当我点击/点击此链接时,它不会突出显示,因此用户无法得到他点击链接而没有错过的响应。在只有TextView的简单应用程序中,它可以正常工作,当用户点击链接时,它会在Android打开Chrome中的链接之前在短时间内突出显示。高亮显示如下:
screenshot with highlighted link in TextView

所以,我做了一些研究,为什么我的链接没有突出显示,并从我的应用程序中删除了所有无关紧要的东西。现在我可以说当TextView嵌入DrawerLayout时,它只能按预期工作。

现在这是我的剥离应用程序,您可以轻松地重现我的问题:

activity_mail.xml:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

        <TextView 
            android:id="@+id/simple_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:linksClickable="true"
            android:autoLink="all"
            android:padding="10dp"
            android:text="Test link: http://www.google.de. Test test testtest." />

</android.support.v4.widget.DrawerLayout>

MainActivity.java:

package com.example.testlinktextview;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;

public class MainActivity extends ActionBarActivity  {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    }
}

当我将activity_main.xml中的android.support.v4.widget.DrawerLayout替换为LinearLayout时,它会像预期的那样工作。

有人知道如何在点击时突出显示链接吗?

1 个答案:

答案 0 :(得分:1)

基于这个答案https://stackoverflow.com/a/12047372/3271972,我找到了解决方案 ......不是一个完美的解决方案,一点点解决方法,但也许对某人有帮助。

如果你有更好的解决方案,我很乐意阅读它。

我添加到TextView:

<TextView
...
     android:textColorLink="@color/link_selector"

和新文件link_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#34b5e5" />
    <item android:state_focused="true" android:color="#34b5e5" />
    <item android:color="#35b5e5" />
</selector>

我认为#34b5e5几乎是原始的链接颜色 非常重要,第三项<item android:color="#35b5e5" />的默认颜色与state_pressed中的颜色不同。如果它们相同,则按下时链接仍然不会突出显示!颜色必须不同,即使只是一点点!