相关疑难解决方法(0)

Buggy ListView让我感到难过

我有一个ListView地方,我在一个单独的XML文件中定义了每个项目的布局.在这个文件中,我包含了一个RatingBar和一个EditText.

我已经以编程方式创建了7-8个项目ListView.当我滚动它们时,它似乎是非常错误的.这里有些例子:

  1. 如果我将焦点设置到EditText第一行然后向下滚动,则其他行中的ListView随机EditTexts将具有焦点.似乎是EditText在焦点消失后的下一个消失得到了焦点.也许这是故意的,但是,作为一个用户,它似乎很奇怪.

  2. 如果我将焦点设置为a EditText,接收虚拟键盘,键入内容,然后单击虚拟键盘上的"完成"按钮,EditText一旦虚拟键盘消失,它将清空.

  3. 有时,当我点击一个EditText,接收一个虚拟键盘并开始输入字母时,一旦我输入它们,这些字母就会消失.

  4. 当我点击一个EditText,虚拟键盘显示自己,但EditText失去焦点,我必须EditText再次点击.

  5. 尽管我已经设置了RatingBarfocusable="false",如果我将我的滚轮,它仍然抓住重点.

我的一个问题是,当我在虚拟键盘中键入一个字符时,所有可见的列表项都会重新绘制(并且由于文本EditText被设置为某些数据,这是空的,它会被清除.我不明白为什么Android会每次键入一个字符时都决定重新绘制列表.

这是我用来绘制它们的XML.它们是白色气泡,带有灰色边框,还有一些文字,一个RatingBar和一个EditText内部:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="10dip"
    android:paddingBottom="10dip"
    android:paddingLeft="15dip"
    android:paddingRight="15dip"
    >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="2dip"
        android:background="@drawable/shape_outer">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="2dip"
            android:background="@drawable/shape_inner">
                    <TextView
                            android:id="@+id/rating_category"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:textColor="@color/dark_gray"
                            android:textStyle="bold"
                            android:layout_marginBottom="10dip" />
                        <RatingBar …
Run Code Online (Sandbox Code Playgroud)

android listview listviewitem virtual-keyboard

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

android listview里面的cardview onTouch监听器冲突/敏感度

这是一个测试项目,显示问题保管箱链接:https://www.dropbox.com/sh/8s3v9ydcj6jvpl8/AACZ2VRP2N9R1ec7pxrsAn0ga ? dl =0

这是我在这里回答的问题的延续,但现在我要问的是onTouch的敏感性/冲突: 带有ListView的Android CardView - CardView上的onTouchListener无法正常工作

我有一个带有listview的cardview.我将需要列表视图中的滚动和单击项也可以工作,我希望能够使用ontouchlistener移动整个cardview.我在cardview上设置了onTouchListener,但由于listview滚动与cardview移动冲突,因此无法正常工作.

我已经能够在iOS上完成类似的工作,所以在Android上也应该可行.

码:

把它放在build.gradle中:

compile 'com.android.support:cardview-v7:22.0+'
Run Code Online (Sandbox Code Playgroud)

主要活动:

    import android.animation.Animator;
import android.graphics.PointF;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ListView mylistview;
    private CustomCardView mycardview;
    PointF lastLocation;
    static final int REFRESH_RATE = 10; //or 20, or 5, or 30, whatever works best
    int counter = 0;
    PointF viewCenter;
    PointF …
Run Code Online (Sandbox Code Playgroud)

android listview ontouchlistener android-layout android-cardview

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

EditText性能:了解配置文件GPU渲染上的GPU处理时间

我正在研究提高性能的方法EditText,特别是在加载时间方面.当加载几千字或更多字的大型文档时,调用setText可以在我的一些测试设备和模拟器上冻结UI几秒钟.

作为回应,我已经探索了几种可能的解决方案,但都没有产生令人满意的结果.我试图按段落拆分大型文档,并将每个段落加载到自己的行RecyclerViewListView行中.由于导致滚动不稳定的问题,RecyclerView完全没有希望.ListView提供了很好的,几乎是即时的加载时间,以及非常好的滚动(虽然不如一个EditText块好),但是存在一个问题,即EditText行内的块在选中时会失去焦点.我也试图更新EditText从部分onProgressUpdateAsyncTask,希望用户可以用文字,因为它加载的部分进行交互,但加载时间基本上不受影响.

我探索过的最有希望的途径涉及改变以下元素AndroidManifest.xml:

    android:hardwareAccelerated="false"
Run Code Online (Sandbox Code Playgroud)

我在Google开发者频道上观看此YouTube视频片段中的以下片段后得到了这个想法.当我打开GPU Profile渲染时,我发现橙色条(代表"处理时间")每次都setText被调用.当我关闭硬件加速时,setText性能大幅提升,尽管其他领域(如滚动)变得更糟.

我想了解的是 - 为什么会发生这种情况?另外,有没有办法可以使用这些信息来进一步提高性能?我可以简单地以编程方式关闭和打开硬件加速吗?

值得一提的是,一些设备,如运行API 22的Nexus 7,在大型文档上调用setText时不会遇到任何问题,而其他设备真的很难加速硬件加速.我只想了解更好的情况,以便我可以尝试解决它!谢谢.

编辑:

这是一个GitHub存储库的链接,供任何人下载我的一个示例测试应用程序以复制我上面列出的问题.我还在网站上发布了三个视频,展示了这些问题,我将在下面进行讨论:

我做了三个视频演示,显示上运行这个程序, 华为Honor运行冬青4.4.2奇巧hardwareAccelerated设置属性trueAndroidManifest,然后用相同的手机设置为相同的属性false,以及一个独立的Nexus 7(2013)运行Lollipop 5.1启用了硬件加速功能.GPU分析在每种情况下都会启用.

荣誉霍莉 - 加速

Honor Holly - 加速关闭

Nexus 7(2013) - 加速开启

performance android android-edittext

5
推荐指数
0
解决办法
718
查看次数

默认键盘打开时,EditText在listview内失去焦点

我有一个listview,其中包含edittext的数量.当我开始在editext中编写文本时,editext会将自己隐藏在三星Galaxy 10"平板电脑的键盘后面.如何将编辑文本设置在键盘上方?我还在清单中使用了adjustSpan和adjustResize,但未能这样做请告诉我我的代码缺少的地方.任何形式的帮助都是可以理解的.

提前致谢.

android listview refresh android-edittext

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

如何在 RecyclerView.Adapter 类中获取 Activity 按钮单击侦听器

当用户按下 #button 时,它会如何在 RecyclerView 的焦点 EditText 上打印 #。我的代码和输出如下。请帮我....

我已经做了一切,但被困在这里。我可以得到任何建议或链接,提供有关如何实施的更多信息吗?

活动_main.xml

   <?xml version="1.0" encoding="utf-8"?>
    <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:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <Button
                android:id="@+id/btnAt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="\@" />

            <Button
                android:id="@+id/btnHash"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="\#" />
        </LinearLayout>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

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

主活动.java

   public class MainActivity extends AppCompatActivity implements View.OnClickListener {


            private RecyclerView mRecyclerView; // RecyclerVIew
            private CheckItemAdapter myAdapterRecyclerView; //The Adapter for RecyclerVIew

            Button btnAt, btnHash;

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

                mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
                setAdapter();


                btnAt = …
Run Code Online (Sandbox Code Playgroud)

android android-edittext android-recyclerview

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