标签: android-view

Android:对于嵌套视图,getX()和gety()相对于什么?

我有一个嵌套视图V的自定义布局,如下所示:LinearLayout L1 ---> LinearLayout L2 ---> View V.

我有一个为V注册的OnTouchListener.在触摸事件中,我需要获取相对于视图V边缘的触摸事件的坐标.

event.getX()和event.getY()返回的值相对于?我用google搜索并看到相互矛盾的语句,有人说这些值已经相对于视图V的边缘,但是其他人说我需要从event.getX()和event.getY()中减去视图V的边缘坐标来得到相对坐标.

谢谢你的帮助.

android android-layout android-view

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

垃圾收集的频率如何?我不认为我的对象被删除了

如果我有一个类删除自己,它的内部方法应该停止执行吗?我有一个B类告诉A类从A的ArrayList中删除B. 我相当肯定B只存在于A的ArrayList中,所以当我删除它时,它应该被删除,对吧?(注意:我已经包含了一个Serializable实现,以防万一与VM如何处理我的类有关,但我没有在这里写read-和writeObject方法.我怀疑它与它有什么关系这个问题虽然.)

public class A implements Serializable, B_Listener {
    ArrayList<B> bArray;

    public A() {
        bArray = new ArrayList<SomeObject>();
        bArray.add(new B(bArray.size(), this));
    }

    @Override
    public void deleteAtIndex(int index) {
        bArray.remove(index);
    }
}

public class B implements Serializable {
    B_Listener listener;
    int index;

    public B(B_Listener listener, int index) {
        this.listener = listener;
        this.index = index;
    }

    //This is called at some point in a B's lifetime.
    private void selfDestruct() {
        listener.deleteAtIndex(index);
        Log.w("B.class", "Should this not output? It does.");
    }
}

public interface …
Run Code Online (Sandbox Code Playgroud)

java methods garbage-collection execution android-view

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

如何使用java代码将completionThreshold设置为AutoCompleteTextView?

我有这个AutoCompleteTextView:

AutoCompleteTextView a = new AutoCompleteTextView(this);
Run Code Online (Sandbox Code Playgroud)

我需要将completionThreshold标志值设置为1,我想学习使用java代码.我搜索谷歌和stackoverflow,我没有找到方法.

我只需要这样做: android:completionThreshold="1"使用java代码.

如何才能做到这一点?

android autocompletetextview android-layout layoutparams android-view

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

自定义ViewGroup中的自定义View是否应使用onDraw()或layout()?

首先,我创建了一个自定义视图,通过覆盖该onDraw()方法来吸引自己.事实证明这是不切实际的,因为我需要创建大量的视图.所以我创建了一个自定义的ViewGroup,它使用该onLayout()方法绘制每个子节点.

我在android文档中读到了子视图应该实现一个layout()方法.但是我创建的子视图使用onDraw方法绘制自己.我该怎么处理?我应该摆脱这种onDraw()方法吗?任何人都可以举例说明该layout()方法的工作原理以及我应该如何将我的onDraw()方法"转换" 为layout()方法?

我目前的onDraw()方法如下:

protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);

        //Draw Border.
        canvas.drawRect(mCellBounds, mBorderPaint);

        //Draw Background.
        canvas.drawRect(mBackgroundBounds, mBackGroundPaint);

        //Draw Value if not 0.
        if(Value != 0)
            canvas.drawText(Integer.toString(Value), ValueX, ValueY, mNumberPaint);

        //Draw Notes if Value == 0.
        else
        {
            for(int i = 0 ; i < 9 ; i++)
                if(NoteList[i])
                    canvas.drawText(Integer.toString(i), NoteX + ((i%3) * NoteMeasureX), NoteY + ((i/3) * NoteMeasureY), mNotePaint);
        }
    }
Run Code Online (Sandbox Code Playgroud)

android android-custom-view viewgroup android-view

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

Android View inflateException

我正在尝试创建一个自定义视图 - 手指画,我遇到此错误的麻烦,我不知道如何解决它.谁能告诉我有什么问题?

logcat的:

08-04 08:34:01.171: E/AndroidRuntime(15664): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.boenka.mk/com.boenka.mk.Draw}: android.view.InflateException: Binary XML file line #9: Error inflating class com.boenka.mk.DrawPanel
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.os.Looper.loop(Looper.java:137)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.app.ActivityThread.main(ActivityThread.java:4424)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at java.lang.reflect.Method.invokeNative(Native Method)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at java.lang.reflect.Method.invoke(Method.java:511)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-04 …
Run Code Online (Sandbox Code Playgroud)

android android-custom-view android-inflate android-canvas android-view

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

对按钮文本使用2种(或更多种)颜色

我知道我可以通过以下方式更改按钮上文本的颜色:

button.setTextColor(getApplication().getResources().getColor(R.color.red)); //TAKE DEFAULT COLOR
Run Code Online (Sandbox Code Playgroud)

要么

button.setTextColor(0xff0000); //SET CUSTOM COLOR 
Run Code Online (Sandbox Code Playgroud)

要么

button.setTextColor(Color.parseColor("#ff0000")); 
Run Code Online (Sandbox Code Playgroud)

但是我想为文本使用两种颜色:例如,假设我的按钮具有以下文本:"Click Here",我希望"Click"部分显示为红色,"Here"部分显示为蓝色.

这可能吗 ?

android colors android-button android-view

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

视图引用成员变量和局部变量之间的区别

假设我有一个活动,它包含一个TextView.我可以将TextView初始化为成员变量或局部变量.这些与初始化之间有任何记忆明智的区别吗?

示例: 具有本地视图引用的活动:

 public class MainActivity extends Activity{

    @OVerride
    public void onCreate(Bundle b){
       TextView textView = (TextView)findViewById(R.id.my_text_view_id);
    }
}
Run Code Online (Sandbox Code Playgroud)

成员视图参考的活动:

 public class MainActivity extends Activity{
    TextView mTextView;

    @OVerride
    public void onCreate(Bundle b){
       mTextView = (TextView)findViewById(R.id.my_text_view_id);
    }
}
Run Code Online (Sandbox Code Playgroud)

memory android local-variables member-variables android-view

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

Android动态删除(隐藏)tabBar

在我的项目中,我通过ViewPager创建我的tabBar,如下所示:

MainActivity.java

mViewPager = (ViewPager) findViewById(R.id.content_main_viewpager);

        if ( mViewPager != null ) {
            final ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

            adapter.addFragment( new LandingSearch(), "" );
            adapter.addFragment( new LandingWiki(), "" );
            adapter.addFragment( new LandingForum(), "" );

            mViewPager.setAdapter(adapter);
            mViewPager.setOffscreenPageLimit( 3 );

            final TabLayout tabs = (TabLayout) findViewById(R.id.content_main_tabs);

            if ( tabs != null ) {
                tabs.post(new Runnable() {
                    @Override
                    public void run() {
                        tabs.setupWithViewPager( mViewPager );
                        tabs.getTabAt(0).setIcon(R.drawable.ic_tab_search);
                        tabs.getTabAt(1).setIcon(R.drawable.ic_tab_favorite);
                        tabs.getTabAt(2).setIcon(R.drawable.ic_tab_forum);
                    }
                });

            }
        }
Run Code Online (Sandbox Code Playgroud)

app_bar_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-view android-viewpager android-tablayout

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

使用RecyclerView使目录像布局

这就是我要实现的

在此处输入图片说明

我尝试过的是,在单击每个项目时将布局动态添加到recycleView。但是我认为这不是一种有效的方法。

请注意,这是一个类似于结构的目录,其中每个文件夹可以具有子文件夹,每个子文件夹可以具有子文件夹,依此类推。

请提出其他选择。

java android android-layout android-view android-recyclerview

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

TextView:仅在预览中显示文本,而不是在运行时

有没有办法让文本显示在Android工作室的预览窗格中,而不是在手机上运行时显示在实际的应用程序中?

我目前使用该android:hint属性,这对于查看需要多少空间TextView或文本大小非常有用.

但问题是,如果没有分配文本TextView,则提示会显示在应用程序中.

有没有办法让文本只在android studio中显示,而不是在运行时?

xml android textview android-layout android-view

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