Android WebView应用:如何在Toolbar的TextView中显示网页URL
实现WebView加载网页时在Toolbar显示URL的方法
1. 准备布局文件
在你的Activity布局(比如activity_main.xml)中,确保Toolbar包含用于显示URL的TextView:
<androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary"> <TextView android:id="@+id/tv_url" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp" android:textColor="@android:color/white" android:ellipsize="end" android:maxLines="1"/> </androidx.appcompat.widget.Toolbar> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"/>
2. 在Activity中初始化组件并配置WebView
通过设置WebViewClient监听页面加载状态,实时更新TextView的内容:
Kotlin示例:
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.webkit.WebView import android.webkit.WebViewClient import androidx.appcompat.widget.Toolbar import android.widget.TextView class MainActivity : AppCompatActivity() { private lateinit var webView: WebView private lateinit var urlTextView: TextView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 初始化Toolbar和URL显示TextView val toolbar = findViewById<Toolbar>(R.id.toolbar) setSupportActionBar(toolbar) urlTextView = findViewById(R.id.tv_url) // 初始化WebView并配置基础参数 webView = findViewById(R.id.webview) webView.settings.javaScriptEnabled = true webView.settings.domStorageEnabled = true // 设置WebViewClient监听页面加载事件 webView.webViewClient = object : WebViewClient() { // 页面加载完成后更新URL(适用于需要稳定显示最终URL的场景) override fun onPageFinished(view: WebView?, url: String?) { super.onPageFinished(view, url) urlTextView.text = url } // 页面开始加载时更新URL(处理重定向过程中的URL变化) override fun onPageStarted(view: WebView?, url: String?, favicon: android.graphics.Bitmap?) { super.onPageStarted(view, url, favicon) urlTextView.text = url } } // 加载初始网页 webView.loadUrl("https://www.example.com") } // 处理返回键逻辑 override fun onBackPressed() { if (webView.canGoBack()) { webView.goBack() } else { super.onBackPressed() } } }
Java示例:
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; import androidx.appcompat.widget.Toolbar; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private WebView webView; private TextView urlTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化Toolbar和URL显示TextView Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); urlTextView = findViewById(R.id.tv_url); // 初始化WebView并配置基础参数 webView = findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDomStorageEnabled(true); // 设置WebViewClient监听页面加载事件 webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); urlTextView.setText(url); } @Override public void onPageStarted(WebView view, String url, android.graphics.Bitmap favicon) { super.onPageStarted(view, url, favicon); urlTextView.setText(url); } }); // 加载初始网页 webView.loadUrl("https://www.example.com"); } // 处理返回键逻辑 @Override public void onBackPressed() { if (webView.canGoBack()) { webView.goBack(); } else { super.onBackPressed(); } } }
3. 必要配置与注意事项
- 在
AndroidManifest.xml中添加网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
- 若URL过长,布局中给TextView设置的
android:ellipsize="end"和android:maxLines="1"会自动截断并显示省略号,避免超出Toolbar范围。 - 可根据需求选择仅重写
onPageFinished或onPageStarted,前者显示最终加载完成的URL,后者能实时显示重定向过程中的URL变化。
内容的提问来源于stack exchange,提问作者Matin Javid
相关产品推荐
相关产品推荐

