标签: android-view

setVisibility(GONE)视图变为不可见但仍占用空间

我有一个视图,实际上是一个按钮.这是它的XML布局(add_new.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="horizontal">
    <Button
        android:id="@+id/buttonNew"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bText" 
        android:onClick="addNew"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

当我将其可见性设置为GONE时

v = getActivity().getLayoutInflater().inflate(R.layout.add_new, null);
v.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)

它消失但仍占据空间.像这样:在此输入图像描述

这个按钮是一个标题,ListView由这个xml定义:

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

    <ImageView
        android:id="@+id/icon"
        android:layout_width="30dp"
        android:layout_height="40dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="4dp"
        android:src="@drawable/ic_launcher">
    </ImageView>

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+id/label"
        android:textSize="20dp" >
    </TextView>

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

当其可见性设置为GONE时,我不希望它占用额外的列表项.正如文档中所述.

GONE - 此视图不可见,并且不需要任何空间用于布局.

关于如何使它不占用空间的任何想法?

谢谢,Dennis xx

PS我的listview位于FoldersFragment内部,ListFragment这里是我的MainActivity的xml,其中提供了FoldersFragment

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <fragment
        android:id="@+id/foldersFragment"
        android:layout_width="200dip"
        android:layout_height="match_parent"
        class="com.example.fragments.FoldersFragment" >
    </fragment> …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-view

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

为什么没有Activity的getContentView()方法?

这个Activity班有一个setContentView()方法.该PopupWindow班有一个getContentView()方法,但没有别的一样.有没有其他方法来获取活动的主要内容视图?

android android-layout android-view

51
推荐指数
3
解决办法
4万
查看次数

Android:为什么setVisibility(View.GONE); 或setVisibility(View.INVISIBLE); 不工作

我希望我DatePicker的按钮在开始时不可见.当我按下我的魔法按钮时,我想设置可见性(View.Visible);

这里的问题是当我setVisibility(View.GONE)setVisibility(View.INVISIBLE)什么都没有改变并且组件仍然可见时.

final DatePicker dp2 = (DatePicker) findViewById(R.id.datePick2);
final Button btn2 = (Button) findViewById(R.id.btnDate2);

dp2.setVisibility(View.GONE);
dp2.setVisibility(View.INVISIBLE);
btn2.setVisibility(View.GONE);
btn2.setVisibility(View.INVISIBLE);

btn2.setOnClickListener(new View.OnClickListener() {
    public void onClick(View arg0) {
        TextView txt2 = (TextView) findViewById(R.id.txt2);
        txt2.setText("You selected " + dp2.getDayOfMonth()
            + "/" + (dp2.getMonth() + 1) + "/" + dp2.getYear());
    }
});
Run Code Online (Sandbox Code Playgroud)

java android android-datepicker android-layout android-view

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

什么是Android DecorView?

http://developer.android.com/reference/android/view/Window.html#getDecorView():

检索顶级窗口装饰视图(包含标准窗口框架/装饰和其中的客户端内容),可以将其作为窗口添加到窗口管理器.

这令人费解.目前尚不清楚标准的"窗框/装饰"是什么.我完全不知道这是什么,文档很糟糕.它是否存在于应用程序窗口内?它是否围绕应用程序的窗口?

我从未见过具有明显窗口装饰的Android窗口.并且"可以添加为窗口"意味着装饰视图是一个窗口,但这与类层次结构(View不是其子类Window)相矛盾.

那是什么交易?装饰视图究竟是什么?

android window android-view

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

找不到包'com.app ....'中属性''的资源标识符

我已经从eclipse导入了一个项目到Android工作室.它使用自定义视图:

xmlns:app="http://schemas.android.com/apk/res-auto"
Run Code Online (Sandbox Code Playgroud)

我从activity_ro.xml文件中获得以下行中的错误,如:

"错误:(136)在'com.app.xxxx'包中找不到属性'pstsTabPaddingLeftRight'的资源标识符"

app:pstsDividerColor="#00000000"
app:pstsIndicatorColor="#FF33B5E6"
app:pstsTabPaddingLeftRight="14dip"
app:pstsUnderlineColor="#FF33B5E6" />
Run Code Online (Sandbox Code Playgroud)

我不确定自定义视图对于gradle是否有所不同,或者我做错了什么.有人有想法吗?

android android-custom-view android-view android-studio

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

禁用导航抽屉中的暗淡色调

有没有办法在Android的导航抽屉视图中禁用背景视图的暗淡化效果?

java android android-layout android-view navigation-drawer

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

自定义视图...覆盖onTouchEvent但不执行performClick

我在开发的自定义Android视图中收到此警告(来自问题标题).

为什么我会收到警告?它背后的逻辑是什么,即为什么在
覆盖performClick时也会覆盖它onTouchEvent

java android android-custom-view android-view

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

Android Rect对象中top,left,right和bottom的含义是什么

我有一个Android项目,我应该让苹果掉下来.苹果涂在Rect中.所以我创建了一个改变Rect位置并重新绘制的函数.这是我的功能:

private void updateApplesPosition() {
    for(Rect rect:fallingDownFruitsList)
        rect.set(rect.left, rect.top +10, rect.right, rect.bottom +10);
}
Run Code Online (Sandbox Code Playgroud)

我有一个问题:苹果不会掉下来,而是从右到左.为了让苹果落下,我改变了代码:

private void updateApplesPosition() {
    for(Rect rect:fallingDownFruitsList)
        rect.set(rect.left+10, rect.top, rect.right+10, rect.bottom);
}
Run Code Online (Sandbox Code Playgroud)

android android-canvas android-view android-shape

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

什么时候需要在View上执行invalidate()?

我对这个问题的回答刚刚被接受,但我开始想知道究竟是什么时候需要使一个视图无效(以及什么时候没有必要)?

经过一番思考后,我意识到它应该或多或少地像这样工作:

  • 实际绘制的"一切"发生在之后 onResume()
  • 在"免费"时间屏幕的部分可以重绘,但只有那些invalidated(和下面的一切)

因此,看起来,如果我改变后的东西onResume()(例如作为对按钮点击的响应,我应该invalidate()改变View).

但是,从这个问题中的 scana所说,它必须比那更复杂,并且它取决于某些人使用的方法.

例如,是否使用

lastClicked.setImageBitmap();
Run Code Online (Sandbox Code Playgroud)

要么

lastClicked.setImageResource();
Run Code Online (Sandbox Code Playgroud)

那么,什么时候需要在View上执行invalidate()以及它是如何工作的呢?

android android-imageview android-view

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

Android - 尝试在空对象引用上调用虚方法'void android.view.View.getBoundsOnScreen(android.graphics.Rect)'

我有一个简单的地址表格,如下所示:

Java的:

public class NewAddressActivity extends AppCompatActivity {

private TextInputLayout mStreetLayout;
private TextInputLayout mNumberLayout;
private TextInputLayout mNeighborhoodLayout;
private TextInputLayout mCityLayout;
private TextInputLayout mStateLayout;
private TextInputLayout mCepLayout;
private TextInputLayout mPhoneLayout;
private EditText mStreetText;
private EditText mNumberText;
private EditText mComplementText;
private EditText mNeighborhoodText;
private EditText mCityText;
private EditText mStateText;
private EditText mCepText;
private EditText mPhoneText;

private Address mAddressEditing;

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

    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.setDisplayHomeAsUpEnabled(true);
    }

    mStreetLayout = findViewById(R.id.street_layout);
    mNumberLayout = …
Run Code Online (Sandbox Code Playgroud)

android android-view

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