小编new*_*our的帖子

CardView背景颜色状态未受到尊重

简单来说:

我们如何定义CardView的cardBackgroundColor属性的颜色状态(在这种情况下,在ListView布局中)?

(我在安装了4.4的手机上使用了Android L开发者预览版的RC1,在build.gradle中使用了"com.android.support:cardview-v7:21.0.0-rc1")

更长:

在CardView布局中,我们通过cardCornerRadius和cardBackgroundColor设置CardView的角半径和背景颜色.

但是,例如,背景颜色不会被视为选择状态,即是否按下了列表项.

但是,如果在CardView的内部视图中设置了背景颜色和相关的状态,则它将显示在您在CardView中定义的角上.

那么,我们如何才能确保CardView的cardBackgroundColor中的状态得到尊重?

这是cardBackgroundColor,colour_with_states.xml使用的颜色:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true"  android:state_enabled="false" android:state_pressed="true" android:color="@android:color/holo_green_dark" />
    <item android:state_focused="true"  android:state_enabled="false"                              android:color="@android:color/holo_green_dark" />
    <item android:state_focused="true"                                android:state_pressed="true" android:color="@android:color/holo_green_dark" />
    <item android:state_focused="false"                               android:state_pressed="true" android:color="@android:color/holo_green_dark" />
    <item android:state_focused="true"                                                             android:color="@android:color/holo_green_dark" />
    <!-- Only this below is seen in the cardview dispaly -->
    <item android:color="@android:color/holo_blue_bright" />
</selector>
Run Code Online (Sandbox Code Playgroud)

以及使用CardView的布局:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:cardview="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    cardview:cardCornerRadius="10dp"
    cardview:cardBackgroundColor="@color/colour_with_states"
    >

<!-- If we set a background color below, it will overwrite our radius defined above -->
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android" …
Run Code Online (Sandbox Code Playgroud)

android android-cardview

56
推荐指数
3
解决办法
5万
查看次数

如何在 jetpack compose 中检测键盘的打开和关闭?

我在撰写中发现的唯一方法是使用accompanist-insetsand 删除窗口插图。这会导致我的应用程序布局出现其他问题。

Android 方式似乎是这样的,我可以将其传递到我的撰写应用程序中并采取相应的操作。

jetpack compose 还有其他方法吗?

android-jetpack-compose

39
推荐指数
4
解决办法
2万
查看次数

无法在 LazyColumn 中使用屏幕底部的 TextField

我有这个代码

setContent {
  val items = mutableListOf<Int>().apply {
    (1..100).forEach { add(it) }
  }
  LazyColumn {
    items(items) { item ->
      TextField("$item", {})
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

android:windowSoftInputMode="adjustResize"我的AndroidManifest.xml.

如果我单击TextField列表顶部的 a,我可以正常输入文本。

如果我单击TextField屏幕底部附近的 ,键盘会立即出现,然后很快消失,并阻止我输入文本。

TextField当位于屏幕底部时如何输入文字?谢谢!

android-jetpack-compose android-jetpack-compose-text

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

Golang模板范围中的最后一项

鉴于模板

{{range $i, $e := .SomeField}}
        {{if $i}}, {{end}}
        $e.TheString
{{end}}
Run Code Online (Sandbox Code Playgroud)

这可以输出

one, two, three
Run Code Online (Sandbox Code Playgroud)

但是,如果我想输出

one, two, and three
Run Code Online (Sandbox Code Playgroud)

我需要知道哪个是上面范围内的最后一个元素.

我可以设置一个变量来保存数组的长度.SomeField,但是它总是3,而上面的$ i值只会变为2.你不能在我看到的模板中执行算术运算.

是否可以检测模板范围中的最后一个值?干杯.

go go-templates

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

Gradle NDK在生成的Android.mk中指定'include'指令

当你有

android {
  defaultConfig {
    ndk {
                moduleName "yourlib"
                stl "stlport_static"
                ldLibs "log", "z", "m"
                cFlags "-I/some/include/dir/"
        }
    ...
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

在build.gradle中,然后Gradle将编译src/main/jni /中的文件,它将在build/ndk/debug/Android.mk中生成一个Android.mk.

但是,就我而言,我正在尝试编译一些针对OpenCV编译的C++文件.

当我手动创建Android.mk文件并运行ndk-build命令时,我有这个工作.但我想通过Gradle/Android Studio自动完成.

手动执行此操作时,我将包含要链接的库.我这样做,在手动创建的Android.mk中,使用以下行:

include /path/to/the/opencv/directory/sdk/native/jni/OpenCV.mk
Run Code Online (Sandbox Code Playgroud)

但是,在Android的Gradle插件中,我不确定如何在生成的Android.mk文件中添加此"include"指令.

任何人都可以指向我正确的Gradle指令方向将此行添加到生成文件中吗?谢谢.

android opencv gradle android-ndk

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

单击即可解除Android的CollapsingToolbarLayout

我实现了CollapsingToolbarLayout一个视差视图.

当我在一个连续滚动中向后滚动RecyclerView时,它会展开CollapsingToolbarLayout.

但是当我发出嵌套滚动视图的'fling'时,它会停留在嵌套滚动视图的顶部.你必须再次投掷以解开CollapsingToolbarLayout,

Android Studio 2.0中的ScrollingActivity模板演示了此问题.克里斯贝恩的芝士蛋糕项目在详细视图中也表现出同样的效果.

但是,Google Play和Spotify都不会分别在"查看应用"和"播放列表"视图中显示此问题.在单次投掷中,它们将滚动到嵌套滚动视图的顶部并取消折叠工具栏.

这可能与设计库元素有关吗?

编辑:伊恩已经注意到这个报道的错误.请给它上星并发布你可能有的任何工作.

android android-layout android-design-library android-collapsingtoolbarlayout

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

Android 数据绑定:可以从 HashMap 绑定值

我将对象的字段——字符串、整数等——绑定到布局文件。例如:

  <data>
    <variable
        name="appState"
        type="com.example.app.AppState"
        />
  </data>
Run Code Online (Sandbox Code Playgroud)

  <android.support.v7.widget.Toolbar
      android:id="@+id/toolbar"
      android:layout_width="match_parent"
      android:layout_height="?attr/actionBarSize"
      android:background="?attr/colorPrimary"
      android:title="@{appState.thing}"
      />
Run Code Online (Sandbox Code Playgroud)

这工作正常。但是,我HashMap在该 appState 对象中也有一个值。

是否可以从 this 绑定到值,即android:text="@{appState.thehashmap['thekey']"

当前的表达式语法似乎不支持它。

但是,我想知道,有没有办法?非常感谢。

android android-databinding

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

SwiftUI:当前一个视图列表更改时,NavigationView 详细信息视图会弹出后退堆栈

我的第一个屏幕上有一个ListID 和分数。

在详细信息屏幕中,我单击并调用一个回调,该回调会添加到分数并按List分数进行排序。

当我对列表顶部的项目执行此操作时,没有任何反应。(好的)

当我对列表底部的项目执行此操作时,导航视图会弹出后退堆栈并将我带回到第一页。(坏的)

import SwiftUI

class IdAndScoreItem {
    var id: Int
    var score: Int
    init(id: Int, score: Int) {
        self.id = id
        self.score = score
    }
}

@main
struct CrazyBackStackProblemApp: App {
    var body: some Scene {
        WindowGroup {
            NavigationView {
                ListView()

            }
            .navigationViewStyle(.stack)
        }
    }
}

struct ListView: View {
    @State var items = (1...50).map { IdAndScoreItem(id: $0, score: 0) }
    func addScoreAndSort(item: IdAndScoreItem) {
        items = items
            .map {
                if($0.id == item.id) …
Run Code Online (Sandbox Code Playgroud)

swift swiftui swiftui-navigationview

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

EditText和DialogFragment导致OutOfMemory崩溃

我遇到了令人讨厌的内存泄漏和崩溃,这似乎是一个平台错误.我正在尝试调试/另一个/内存问题,但我一直发现这个与EditText相关的错误,保持我的观点以及那些内容.

给定一个DialogFragment,一个带有EditText和UI Monkey的布局我可以使以下简单的应用程序崩溃,因为内存不足异常.

我已经在x86模拟器17-19上进行了测试,截至2014年3月21日的最新更新为16MB.在4.4.2上的Nexus 4上,我看到内存泄漏在五分钟内增加,增加和增加,但从未让它长到足以让它崩溃,但是在查看N4的内存转储时会显示相同的泄漏.

按下选项菜单时,Activity将打开DialogFragment:

package org.example.edittextoom;

import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

public class MainActivity extends FragmentActivity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        DialogFragment df = new Df();
        df.show(getSupportFragmentManager(), "dialogtag");
        return true;
    }

    public static class Df extends DialogFragment {

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks android-edittext android-dialogfragment

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

为什么有时需要在列表中使用 key() ?

我有一个带有一些可变状态列表的组件。我将其中的一个项目以及删除该项目的回调传递给另一个组件。

@Composable
fun MyApp() {
  val myItems = mutableStateListOf("1", "2", "3")
  LazyColumn {
    items(myItems) { item ->
      MyComponent(item) { toDel -> myItems.remove(toDel) }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

该组件deleteclickable修饰符中调用回调。

@Composable
fun MyComponent(item: String, delete: (String) -> Unit = {}) {
  Column {
    Box(
      Modifier
        .size(200.dp)
        .background(MaterialTheme.colors.primary)
        .clickable { delete(item) }
    ) {
      Text(item, fontSize = 40.sp)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这很好用。但是当我更改clickable我自己的修饰符时pointerInput(),就会出现问题。

fun Modifier.myClickable(delete: () -> Unit) =
  pointerInput(Unit) {
    awaitPointerEventScope { awaitFirstDown() }
    delete()
  } …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-jetpack-compose-list

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

Scala尝试和不同的失败案例

此代码返回"我失败了"作为例外.

  Try({
    throw new Exception()
  }) match {
    case Failure(e) => println("I've failed")
    case Success(s) => println("I've succeeded")
  }
Run Code Online (Sandbox Code Playgroud)

但是,如果我有不同的异常,例如:

  Try({
    if(someBoolean) {
      throw new DifferentException()
    } else {
      throw new Exception()
    }
  }) match {
    case Failure(e) => println("I've failed")
    case Success(s) => println("I've succeeded")
  }
Run Code Online (Sandbox Code Playgroud)

如何更改匹配语句,以便我们有不同的情况ExceptionDifferentException

我知道我可以这样做:

  Try({
    if(true) {
      throw new DifferentException()
    } else {
      throw new Exception()
    }
  }) match {
    case Failure(e) if e.isInstanceOf[DifferentException] => println("I've failed differently")
    case Failure(e) if …
Run Code Online (Sandbox Code Playgroud)

scala

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