小编Vit*_*nko的帖子

android工具栏popupTheme vs主题

我经常在布局文件中看到工具栏的这个声明:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

为什么有两个与主题相关的属性:主题和弹出主题?

每个人的目的是什么?

android android-appcompat android-support-library android-toolbar

79
推荐指数
1
解决办法
2万
查看次数

android animate()withEndAction()vs setListener()onAnimationEnd()

我经常使用ViewPropertyAnimator并使用withEndAction()函数设置结束动作,如:

view.animate().translationY(0).withEndAction(new Runnable() {
    @Override
    public void run() {
        // do something
    }
}).start();
Run Code Online (Sandbox Code Playgroud)

但您也可以设置结束动作设置特殊监听器,如:

view.animate().translationY(0).setListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        // do something
    }
});
Run Code Online (Sandbox Code Playgroud)

那么这两种方法之间有什么区别,何时应该使用它们?

android android-animation viewpropertyanimator

21
推荐指数
1
解决办法
3830
查看次数

android无法从Javascript运行Java函数

在我的项目中,我有一个WebView加载页面(HTML).我希望在用户点击任何图像时更改所有图像并显示祝酒词.

所以我添加了调用Java函数的javascript代码:

// code is inside onPageFinished(..) function
JavaScriptInterface jsInterface = new JavaScriptInterface(activity);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");

webView.evaluateJavascript(
  "var imgs = document.getElementsByTagName('img');" +
  "for (var i = 0; i < imgs.length; i++) {" +
  "imgs[i].src = 'file:///android_asset/rules_images_placeholder.png';" +
  "imgs[i].addEventListener('click', function() {" +
  "window.JSInterface.showToast(); " + // <-- isn't called: see logs
  "});" +
  "} " +
  "window.JSInterface.showToast();" // <-- is called
  , null);
Run Code Online (Sandbox Code Playgroud)

JavaScriptInterface类:

public class JavaScriptInterface {
  private Activity activity;
  public JavaScriptInterface(Activity activity) {
    this.activity = activity;
  } …
Run Code Online (Sandbox Code Playgroud)

javascript android

11
推荐指数
1
解决办法
968
查看次数

将style ="?android:attr/buttonBarStyle"设置为父布局,将style ="?android:attr/buttonBarButtonStyle"设置为按钮使它们不可见

我遵循Android推荐并设置style="?android:attr/buttonBarStyle" 为父布局和style="?android:attr/buttonBarButtonStyle"按钮.

所以现在我的布局是这样的:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    style="?android:attr/buttonBarStyle">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 1"
        style="?android:attr/buttonBarButtonStyle"/>

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 2"
        style="?android:attr/buttonBarButtonStyle"/>

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 3"
        style="?android:attr/buttonBarButtonStyle"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

但是在设置了样式后,这些按钮变得不可见,但我仍然可以点击它们.

请告诉我有什么问题.

编辑:其他细节

好吧,我刚刚创建了一个专门用于测试此布局的新项目,并且令人惊讶的是它确实可行.

所以更准确地说,实际上,我动态地将这个布局添加到另一个布局,如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/buttons_panel_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

    </LinearLayout>

    <!-- some other stuff -->

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

码:

LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

LinearLayout buttonsPanelContainer = (LinearLayout) findViewById(R.id.buttons_panel_container);

View buttonPanelView = null;
if(chosenValueType.equals("some_type")) {

    buttonPanelView = layoutInflater.inflate(R.layout.some_buttons_panel, null);

    Button Button1 …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-styles

10
推荐指数
1
解决办法
1万
查看次数

Android会在键入时自动将EditText的内容移动到下一行

我需要我的EditText组件在文本到达行尾时将文本移动到下一行.

有没有人知道如何防止EditText在填充文本时垂直扩展?而是EditText应垂直滚动.有没有办法在不修复EditText大小的情况下完成它?

我在网上搜索了相关信息,但没有找到答案.

android

7
推荐指数
1
解决办法
7077
查看次数

android阻止视图恢复其状态

大多数内置小部件在配置更改时恢复其状态.
但是现在我想要禁用此功能.
我在onCreate()调用期间将特定视图设置为某个值,并且如果设备已旋转,则在onRestoreInstanceState()期间更改它.
我可以在onRestoreInstanceState()之后重置它,但也许有另一种方法可以做到这一点.

android android-lifecycle

1
推荐指数
1
解决办法
562
查看次数