标签: android-view

Android View.scrollTo(x,y)在哪里滚动到?

scrollTo(int x, int y) 说:

x要滚动到的x位置

y要滚动到的y位置

onScrollChanged(int l, int t, int oldl, int oldt) 说:

l当前水平滚动原点.

t当前垂直滚动原点.

我想知道什么,在任何地方都找不到,x,y在哪里?左上方?中央?我尝试了一些测试但无法弄明白.

android android-view android-scroll

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

在Android中将一个片段滑过另一个片段

在android中,我们可以将片段滑过另一个吗?例如,在下图中:

图片1

有两个片段.一个是红色,另一个是蓝色.如果用户将手指按在黑色箭头上并将其向右拖动,则红色片段也随之拖动,从而覆盖蓝色片段.最后,红色片段覆盖整个蓝色片段.此外,如果用户在红色片段被拖动到不到一半的蓝色片段之前抬起他的手指,则红色片段应该回到其原始位置(因此不覆盖蓝色片段).然而,如果用户不抬起他的手指(即拖动箭头)直到红色片段覆盖蓝色片段的一半以上或整个蓝色片段,则红色片段应覆盖整个蓝色片段.

此外,如果红色片段(如Buttons,EditTexts等等)有任何视图,那么它们也会相应地重新调整大小.

有没有办法做到这一点?如果是,那怎么样?

android android-animation android-layout android-fragments android-view

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

在gridview适配器中,getView(position == 0)被调用太多次以在装载器中的setImageBitmap()时测量布局

我有一个GridView显示一些图标.

在我从Android开发者网站上有效地阅读这个显示位图之前,我正在从getView()适配器直接解码本地路径中的位图,如下所示:

public View getView(int position, View convertView, ViewGroup parent) {
      ...
      ImageView icon = ...... (from getTag() of convertView)
      icon.setImageBitmap(BitmapUtil.decode(iconPath));
      ...
}
Run Code Online (Sandbox Code Playgroud)

这种方式无论如何工作正常,我称之为[直接模式],getView()方法的输出日志应该是:

getView(0)   // measure kid's layout.
getView(0)
getView(1)
getView(2)
...
getView(n)       // when scrolling gridview.
getView(n+1)
...
getView(n+3)    // scrolling again.
getView(n+4)
...
Run Code Online (Sandbox Code Playgroud)

然后我试图将代码更改为有效显示位图的文章中提到的[Loader Mode] ,如下所示:

public View getView(int position, View convertView, ViewGroup parent) {
      ...
      ImageView icon = ...... (from getTag() of convertView)
      loadIcon(icon, …
Run Code Online (Sandbox Code Playgroud)

android android-gridview android-view

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

Android:你有一个涟漪效应,其默认状态颜色是透明的吗?

像下面的东西,但它不起作用.如果我将可绘制颜色切换为蓝色,它可以工作.

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <item android:drawable="@android:color/transparent"/>
</ripple>
Run Code Online (Sandbox Code Playgroud)

android android-layout android-view android-selector

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

getWidth()和getHeight()始终返回0.自定义视图

在片段中,我使用多个子视图为一个布局充气.我需要获得其中一个的尺寸(宽度和高度),这是一个自定义视图.

在自定义视图类中,我可以轻松完成.但是如果我尝试从片段中做到这一点,我总是得到0作为维度.

 public void onViewCreated(View view, Bundle savedInstanceState) {

    super.onViewCreated(view, savedInstanceState);
    View culoide = view.findViewWithTag(DRAW_AREA_TAG);
    Log.d("event", "culoide is: "+culoide.getWidth()); // always 0
}
Run Code Online (Sandbox Code Playgroud)

我认为onViewCreated应该是获得它的正确位置,但这种情况发生了.我在super.onViewCreated之前尝试过,在调试它看起来像'findViewWithTag'找到了正确的视图,仅尝试使用api 7 v4支持.

有帮助吗?

android android-view

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

在android kitkat中使用新的IMMERSIVE模式

我想让一个活动进入IMMERSIVE模式并在它启动时隐藏顶部和底部系统栏.

在android开发者网站上,他们说我应该使用setSystemUiVisibility()并提供SYSTEM_UI_FLAG_IMMERSIVESYSTEM_UI_FLAG_HIDE_NAVIGATION.

我怎么能OnCreate()在活动的方法中这样做?我认为setSystemUiVisibilityActivity类中没有提供它,它应该在视图中发生.有解决方法吗?

UPDATE

确定根据门把我添加了以下行,但我没有看到任何更改,导航栏和按钮按钮仍然可见:

public class MainActivity extends Activity {

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

        if (savedInstanceState == null) {
        }
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE);
    }

    //Rest of activity code
Run Code Online (Sandbox Code Playgroud)

android android-view android-4.4-kitkat

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

android libvlc多个表面问题

我想知道是否可以在同一布局中使用两个表面并同时查看每个表面.将来我会看一个视频视图的网格视图,但每个视频视图都使用vlc.

我使用片段修改此示例(android-vlc-sample).

结果是我只看到一个视频......我该如何解决?

从log-cat我没有看到重要的错误,但我认为android UIThread存在渲染问题

Java编码

public class MultipleVideoPlayFragmentActivity extends FragmentActivity {

public final static String LOCATION = "com.compdigitec.libvlcandroidsample.MultipleVideoPlayFragmentActivity.location";
private static final String TAG = "MediaPlayer";
public String mFilePatha;

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_multiple_video_play_fragment);
    Intent intent = getIntent();
    mFilePatha = intent.getExtras().getString(LOCATION);
}

public static class VideoFragment extends Fragment implements
        SurfaceHolder.Callback, IVideoPlayer {
    public final static String TAG = "LibVLCAndroidSample/VideoActivity";

    public final static String LOCATION = "com.compdigitec.libvlcandroidsample.VideoFragment.location";

    private String mFilePath;

    // display surface
    private SurfaceView mSurface; …
Run Code Online (Sandbox Code Playgroud)

android vlc libvlc android-fragments android-view

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

从已有视图以编程方式复制视图

我正在尝试以下代码并得到一个错误,因为没有定义这样的构造函数.

View v = new View(findViewById(R.id.divider));

有没有简单的方法将视图复制到另一个视图?

android android-view

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

摆脱全屏活动的不必要的根布局

如何摆脱全屏活动的不必要的根布局?

我有一个简单的全屏活动.布局检查器显示Android提供的大型根布局层次结构,我不需要全屏显示.

<code>layout/activity_main.xml</code>:</p>

<pre><code><application
    android:allowBackup=Run Code Online (Sandbox Code Playgroud)

调用Tools > Android > Layout Inspector以查看生成的根模板.

要使其全屏,只需HelloWorld在布局中添加一个ID 到TextView并更新MainActivity.java:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    tools:context="com.blcknx.myapplication.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

标志正在隐藏导航,但它们不会删除未使用的布局.

你的答案

使用简单的TextView.全屏显示.检查Tools > Android > Layout Inspector您删除根布局的距离.显示截图.显示你的代码.

android android-layout android-view android-activity kotlin

22
推荐指数
2
解决办法
621
查看次数

更改CardView阴影颜色

这个问题在很多时候被问过,但我仍然找不到解决这个问题的好方法.

为什么我需要这样做?好吧,因为项目我和我的团队开发有iOS风格.

我尝试了什么?

  1. 9.pathch阴影生成器,但9.pathes本质上是pngs,它给了我没有灵活性,如果我将使用这种方法,我应该编辑边缘到处.
  2. 它支持自定义阴影的碳库,它们被绘制到视图边框之外,但是当库不为圆角绘制阴影时,存在关于圆角矩形的问题.
  3. 使用旧的CardView实现并覆盖其阴影颜色,但它被绘制在卡片边界内,因此它不是选项.

那么有没有办法改变CardView的阴影颜色,只需对所有布局文件进行最少的编辑,并在视图外部绘制阴影,就像原始的CardView一样?

android shadow android-view android-cardview android-elevation

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