标签: android-inflate

Android View生命周期

我在我的应用程序中使用SemiClosedSlidingDrawer.

快速解释:

  1. 滑动抽屉有手柄内容部分
  2. 内容部分在创建视图时部分打开

问题:

当我创建视图时,内容部分被充气并缓存,然后部分显示.如果我对主要内容执行任何操作.它反映到滑动抽屉的内容部分.即使它是部分可见的.

我设法找到了内容未设置为GONE 的答案,因此只有接收触摸事件.

在完成所有通胀缓存后,我必须将内容设置为GONE.所以我需要知道

哪个View创建生命周期方法最后调用?或者 在哪里设置ChildView的可见性属性?

我可以在活动中引用我的slidingDrawer内容并设置为GONE它工作正常.但应该有一个正确的方法来解决这个问题.

lifecycle android view android-inflate

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

从布局android-support-v4扩展片段时出错

我在使用2.2平台的片段时遇到了麻烦.我导入了android-support-v4.jar库以支持片段.
我试图将目标更改为Honeycomb 3.0,代码可以运行.所以,我想知道是否存在一种在本机平台上使用片段的方法,以及使用先前版本执行此操作的不同方法.

这是我的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nsy.testefragmentos"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="8" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".TesteFragmentosActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
            <activity android:name="FragmentoLista" />
            <activity android:name="FragmentoDetalhe" />
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

这是我的主要课程

package com.nsy.testefragmentos;

import android.app.Activity;
import android.os.Bundle;

public class TesteFragmentosActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,从main.xml文件调用的片段:

package com.nsy.testefragmentos;

import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater; …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-inflate android-fragments android-support-library

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

Android浮动视图跨活动

需求

我有一个包含2个活动的应用程序,例如A和B,带有A->BB->A(在背面按下)的导航.我的要求是

  • 我希望在屏幕上浮动一个视图/布局,而不管当前哪个活动可见.我在app start(onCreate of activity A)上膨胀这个视图,它在从A-> B过渡到B在屏幕上时在屏幕上保持静态.
  • 所以自然这个视图应该只膨胀一次(当app开始时,onCreate of A).

我发现了什么

我做了一些搜索,从我能找到的,有两种方法可以在android中重用布局

  • 运用 <include>

    它似乎是一个编写常用UI元素的xml代码的工具.每次在父布局中使用它时都会膨胀.

  • 运用 ViewStub

    我做了一些关于使用ViewStub的研究,它似乎也是一种在许多布局中重用代码段的方法.每次我们在布局中使用它时,它也需要膨胀,除非它在运行时使它们可见时才会膨胀.

我的要求的另一个暗示

对于熟悉iPhone开发的人来说,您可以添加视图UIWindow,无论哪个UIViewController当前处于活动状态.我想要在我的应用程序中的确切行为

我原来的设置

我的目标是Android 2.1及以上版本.它似乎Fragment可从API级别11(android 3.0)及更高版本获得.一种选择是使用Android兼容性库,以便Fragment在旧版本中使用.我现在正在研究这个问题.但我也想知道是否有其他方法可以满足我的要求,而不是改变我的整个项目并使用片段.

我的应用程序中有大约30个奇怪的活动,我希望这个布局浮动在所有这些活动上.我刚刚制作了一个包含2个活动的测试用例,使问题简单易行.

layout android floating android-inflate android-activity

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

手动膨胀自定义视图会为ActionBar自定义视图生成不同的布局

资源的自定义视图:

// Set up the action bar.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setCustomView(R.layout.custom_action_bar);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
Run Code Online (Sandbox Code Playgroud)

结果是:
在此输入图像描述

自定义视图手动膨胀:

// Set up the action bar.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
LayoutInflater inflater = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.custom_action_bar, null);
actionBar.setCustomView(view);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
Run Code Online (Sandbox Code Playgroud)

结果是:
在此输入图像描述

custom_action_bar.xml:

<?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" 
    android:weightSum="3">

    <TextView 
        android:id="@+id/bar_title1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="@color/White"
        android:text="title1"/>
    <TextView 
        android:id="@+id/bar_title2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="@color/White"
        android:text="title2"/>
    <TextView 
        android:id="@+id/bar_title3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="@color/White"
        android:text="title3"/>

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

这里显示的第一个布局是正确的,因为它的小部件有权重.第二次尝试应该产生相同的结果,但事实并非如此.

android android-custom-view android-inflate android-actionbar

6
推荐指数
2
解决办法
8634
查看次数

膨胀图层 - 在android中的形状列表

我在我的drawable文件夹中有以下文件/drawable/mybkg.xml.我想给它充气,这样我就可以通过编程方式更改颜色.这可能在Android?

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="oval" >
            <padding
                android:top="5dp"
                android:bottom="2dp"
                android:left="2dp"
                android:right="2dp" />

            <solid
                android:angle="270"
                android:color="#1bd4f6" />

            <stroke
                android:width="2dp"
                android:color="#121ce5" />
        </shape>
    </item>

    <!-- Foreground -->
    <item>
        <shape android:shape="oval" >

            <solid android:color="#1b90f6" />
        </shape>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

我刚才看到一个叫做的课 LayerDrawable.有谁知道如何LayerDrawable通过编写代码或膨胀现有的xml 将我的xml文件转换为这样的文件 ?

android android-layout android-inflate layer-list

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

单个视图上的Android数据绑定是否以编程方式添加到LinearLayout?

我可以毫无困难地获得"活动范围"的数据绑定工作.但是,当我尝试为特定视图设置绑定时,假设我以编程方式添加到LinearLayout的膨胀视图,我尝试过的任何工作都没有.

例如,将数据绑定到Activity的视图是微不足道的.通常在onCreate()方法中,只需要添加:

MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
User user = new User("Test", "User");
binding.setUser(user);
Run Code Online (Sandbox Code Playgroud)

而已!视图main_activity.xml将通过一些魔法"绑定"到绑定(这是我的问题),变量替换将在main_activity.xml中按预期工作.

我查阅了Google有关RecyclerView使用的文档,并尝试在我的虚增视图中使用此方法.我这样做是通过创建一个ListItemBinding(我的.XML就被称为list_item.xml这个文件是自动生成的关闭的.xml布局的)每个ViewHolder的ListItemBinding被传递到ViewHolder举行通过参考每个ViewHolder的构造函数.

现在当然,这并不工作,我猜测,这样做的原因是,有我的视图和约束力,但是,有上述活动,并绑定要么之间不系领带之间没有明确的领带,那么,为什么不工作?

我正在深入研究源代码以了解绑定如何对活动起作用,我确信这将有我的答案,但如果有其他人可以在我花费多个小时之前插入,我会很感激开始!

我将在此报告所有调查结果,非常感谢

xml data-binding layout android android-inflate

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

Android:在同一活动中更改布局

在我的应用程序的主布局中,我有一个搜索任务按钮。现在,当用户单击该按钮时,我想将布局 xml 文件更改为 search_layout.xml。我不想为搜索任务创建一个新活动,并想使用我的 activity_main.java 类进行编码。那么如何从现有的 activity_main.xml 膨胀 search_layout 。

我的activity_main 布局是使用Collapsing 工具栏和Recycler 视图协调布局。

在我的 search_layout.xml 我有一个简单的相对布局。

那么如何处理呢?我搜索了这个,但到处都可以找到如何将视图添加到现有视图中。但就我而言,我想完全改变看法。

谢谢

xml layout android android-layout android-inflate

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

使用chrisjenx时的InflateException CalligraphyLayoutInflater,android.view.InflateException

嗨所以在我们的项目中我们使用书法库,它没有任何问题,但现在在我添加的其中一个活动中,它与以下堆栈跟踪一起崩溃:

01-23 02:25:32.178 3654-3654/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example, PID: 3654
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.activities.MultipleActivity}: android.view.InflateException: Binary XML file line #98: Error inflating class com.example.components.WLayout
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
    at android.app.ActivityThread.access$800(ActivityThread.java:135)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5017)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #98: Error inflating class com.example.components.WLayout
    at android.view.LayoutInflater.createView(LayoutInflater.java:621)
    at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(CalligraphyLayoutInflater.java:211)
    at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(CalligraphyLayoutInflater.java:20)
    at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:302)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:690)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:759) …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-inflate calligraphy

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

保持SplashScreen直到在android中加载反应本机包

我在本文中如何将启动画面添加到React Native App中的 android指南

并且在我的主要活动之前启动我的SplashScreen活动,即Android应用程序正在膨胀时.

到目前为止一切都那么好,但是有一些白色的闪烁是由我希望删除的本机js捆绑加载引起的.文章建议使用react-native-splash-screen库,但是我想将我的依赖关系保持在最低限度.

React原生文档有这个专业提示,基本上实现了我正在寻找的东西,但在iOS(它不会显示启动画面而捆绑未加载).我想弄清楚我将如何在原生java中为android做类似的事情,但到目前为止还没有运气.

android splash-screen android-inflate react-native

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

如何给自定义视图类充气?

我有一个扩展的类view,它定义了一个自定义绘图(电阻).我想点击一个按钮并将其添加viewmain layout.所以我看到电阻器,如果我再次点击它会添加另一个电阻器,依此类推.但我不知道解决这个问题的最佳方法.我已经看过很多引用的问题layoutinflater,但是没有一个问题让自定义视图类膨胀(也许我正在寻找错误的东西),它总是一个xml文件. 所以我的问题是:如何ResistorViews在我的布局中添加多个,以便用户可以与它们进行交互(移动,删除,突出显示等)?

这是我尝试过的:

活动类:

public class CircuitSolverActivity extends Activity {       

@Override    
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final Button bAddResistor = (Button) findViewById(R.id.bAdd);        
    final LinearLayout mLayout = (LinearLayout)findViewById(R.layout.main);
    final ResistorView mResistor = new ResistorView(this, 100, 100);
    bAddResistor.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {               

            mLayout.addView(mResistor);                 

        }
    });
  }    

}
Run Code Online (Sandbox Code Playgroud)

ResistorView类:

public class ResistorView extends View{

    private Path mSymbol;
    private Paint mPaint;

    int mX, mY;

    //...Override …
Run Code Online (Sandbox Code Playgroud)

android android-custom-view android-layout android-inflate

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