标签: android-view

OnTouch可以工作,但是OnClickListener没有?

我创建了一个小部件/控件,我可以重用我通过扩展创建的RelativeLayout.然后,在我的一个活动中,我在循环中创建了一堆这些小部件.但是,当我想让每个小部件响应一次点击时,我遇到了一个问题.

我发现设置OnTouchListener有效:

 this.setOnTouchListener(new OnTouchListener(){
        public boolean onTouch(View arg0, MotionEvent arg1) {
           //Triggers debug message
        }       
    });
Run Code Online (Sandbox Code Playgroud)

OnClickListener不是:

  this.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v) {
           //Doesn't trigger debug message  
        }

    });
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

android ontouchlistener android-view onclicklistener

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

android:fitsSystemWindows无效

在我的主题中,我定义了以下规则来在状态栏后面绘制我的观点:

<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
Run Code Online (Sandbox Code Playgroud)

并在Activity(onCreate)中:

getWindow.getDecorView.setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
)
Run Code Online (Sandbox Code Playgroud)

然后,在我的View中使用Barcodescanner,它应该在状态栏后面绘制,这是有效的.但是,当我应用于android:fitsSystemWindows任何子视图时,他们不会调整其位置.但是,当我将它应用于根元素时,它正在工作.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content">

    <my.Scanner
        android:id="@+id/scanner"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <FrameLayout android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:fitsSystemWindows="true"> <!-- Should receive a top padding, right? -->

        <View android:layout_width="50dp"
              android:layout_height="50dp"
              android:background="@color/red" />

    </FrameLayout>

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

截图

android android-view

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

AppCompat视图与普通Android视图之间的差异

AppCompat视图组件和标准/默认视图组件之间有什么区别?

例如,an AppCompatEditText和an EditText之间或a AppCompatButton和a 之间的差异Button.

查看开发人员文档android.support.v7.widget,AppCompat视图组件被描述为" tint aware ",但这是唯一的区别,这究竟是做什么的?

android android-appcompat android-view android-support-library

20
推荐指数
2
解决办法
8813
查看次数

ListView与三角形项目

在此输入图像描述

我需要实现一个带有三角形项目的ListView,如图所示.添加到ListView的视图通常是矩形的.即使在文档中,视图也被描述为"占据屏幕上的矩形区域并负责绘图和事件处理".

如何将非矩形形状添加到ListView,同时确保单击区域仅限于形状,在本例中为三角形.

谢谢!

android listview android-listview android-view

20
推荐指数
2
解决办法
1120
查看次数

如何正确删除Android中按钮周围的填充(或边距?)?

目前,我有以下底部登录按钮.

没有按下按钮时

在此输入图像描述

按下按钮时

在此输入图像描述

XML看起来像这样

<LinearLayout
    android:background="?attr/welcomeBottomNavBarBackground"
    android:orientation="horizontal"
    android:id="@+id/sign_in_bottom_nav_bar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">
    <Button
        style="?android:attr/buttonBarButtonStyle"
        android:id="@+id/sign_in_button"
        android:layout_width="0dp"
        android:width="0dp"
        android:layout_weight="1.0"
        android:layout_height="48dp"
        android:gravity="center"
        android:layout_gravity="center"
        android:enabled="true"
        android:textAllCaps="true"
        android:text="@string/log_in" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我想在按下按钮时删除按钮周围的填充(或者我应该将其称为边距?请参阅我最底部的p/s部分).

我看看如何删除Android中的按钮周围的填充?

我试过了

<Button
    ...
    ...
    android:minHeight="0dp"
    android:minWidth="0dp" />
Run Code Online (Sandbox Code Playgroud)

它不起作用也没有效果.


我进一步尝试

<Button
    ...
    ...
    android:background="@null"
    android:minHeight="0dp"
    android:minWidth="0dp" />
Run Code Online (Sandbox Code Playgroud)

按下时不再填充.然而,设计压制视觉效果的材料也将消失.

我可以知道在压制过程中删除按钮填充的最佳方法是什么,但保留材料设计按下的视觉效果?

P/S

我真的不知道是否应该称之为填充或边距.我希望实现的是,当我们按下底部区域时,按下视觉效果变化应覆盖整个100%底部区域(@+id/sign_in_bottom_nav_bar),而不是当前95%的底部区域.

java android android-layout android-button android-view

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

如何显示双色背景的文字?

我需要为Android创建一个应用程序,其中双色文本将显示在双色背景上.见左图.然后,应该用动画移动线条,结果图像应该在右边的图片上.

我有以下问题:

  1. 我应该使用一些2d引擎来做到这一点吗?或者,使用标准视图是否可以?怎么做?
  2. 如何在图片上绘制文字?

PIC1 --------- PIC2

android andengine libgdx android-view

19
推荐指数
3
解决办法
954
查看次数

Android - 打开和关闭屏幕时,覆盖在全屏视频最后一帧上的视图无法正确重绘

我有一个以纵向模式播放的视频.在视频结束时,我需要显示一些视图.这到目前为止工作正常.

但是,我有一个问题,即在关闭屏幕后再返回活动,然后再打开屏幕时,视频最后一帧的视图不能正确重绘.

我观察到的是,当屏幕重新亮起并且我解锁时.我的视频和图像首先在全屏模式之外呈现(状态栏仍然显示),然后屏幕将进入全屏模式,将所有视图向上移动并导致伪像.

看起来这些视图在渲染后通过过渡到全屏来移出视图范围.

我真的很难过如何防止这种情况发生.

这是github上的沙箱项目,以避免使这个帖子充满代码.

该项目的基本设置如下:

片段活动在其布局上有视频视图和按钮视图.然后它将一个片段添加到contentView容器中.contentView在视频播放结束前1秒内淡出.

一切顺利,问题在于打开和关闭屏幕电源后返回应用程序.

此外,有时视频将完全退出,使视图位于黑色背景上.

提前感谢您提供的任何帮助.

正确呈现视频的视图

这是您关闭,重新打开和解锁屏幕时发生的瑕疵.请注意,我必须拍一张照片.在DDMS上,屏幕截图工具可以正确查看图像.

人工影像

android fullscreen android-video-player android-fragments android-view

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

如何将自定义视图添加到布局?

我有一个GraphicsView从类扩展的View类,我想将这个GraphicsView类添加到我的项目的主布局中.我怎样才能做到这一点?

static public class GraphicsView extends View {
        public GraphicsView(Context context) {
        super(context);
        }
        @Override
        protected void onDraw(Canvas canvas) {
        // Drawing commands go here
            Path rect = new  Path();
            rect.addRect(100, 100, 250, 50, Direction.CW);
            Paint cPaint = new Paint();
            cPaint.setColor(Color.LTGRAY); 
            canvas.drawPath(rect, cPaint);
        }
    }
Run Code Online (Sandbox Code Playgroud)

和我的main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linnnnlayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <TextView 
        android:id="@+id/Customfont"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

     <View 
         android:id="@+id/view"
          android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

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

android android-layout android-view

19
推荐指数
5
解决办法
4万
查看次数

设置父母视角对其子女的影响

这个问题源于必须动态地显示/隐藏不同的视图.View有3个可见性设置 - 可见,不可见和消失.如果你有一个父视图,例如a LinearLayout,它有几个子视图(无关紧要)是设置父视图的可见性与在所有子视图上独立设置visiblity相同?例如,如果我说

LinearLayout container = (LinearLayout) findViewById(R.id.layout_1);
container.setVisiblity(View.GONE);
Run Code Online (Sandbox Code Playgroud)

这与查找每个子视图并将所有这些可见性设置为相同View.GONE吗?如果父母不是View.GONE,View.INVISIBLE怎么办?所有的孩子还在画画但是还没有看到吗?

android android-layout android-linearlayout android-view

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

自定义ViewGroup焦点处理

假设我有一个可自由聚焦的自定义ViewGroup,并且有一些可以聚焦的子视图(Android机顶盒的自定义垂直菜单应该在远程控制器上作出反应).

每当自定义ViewGroup获得焦点时,我都需要将焦点传递给一些子视图.

我设置descendantFocusabilitybeforeDescendants并设置OnFocusChangeListener为自定义ViewGroup但OnFocusChangeListener.onFocusChanged()从未调用.它看起来像beforeDescendants我预期的那样不起作用.实际设置beforeDescendants工作与设置相同afterDescendants- 焦点由最近的子视图拍摄,自定义ViewGroup没有机会决定哪个子视图应该关注焦点.

我怎样才能达到理想的行为?在ViewGroups中处理焦点的最佳实践是什么?

android focus android-custom-view viewgroup android-view

19
推荐指数
2
解决办法
2196
查看次数