有关为 Android 创建自定义布局的教程?

发布于 2024-11-15 17:18:10 字数 622 浏览 2 评论 0原文

我正绞尽脑汁试图解决这个问题,希望有人能找到解决方案。

我想为 Android 应用程序创建自定义布局。理论上这应该足够简单,但我找不到关于如何做到这一点的有用信息。

我在找: 1) 关于如何子类化 ViewGroup 以创建自定义布局的简单分步教程。 2) 对内部机制有基本的了解,例如如何访问子视图、如何以及何时要求子视图自行绘制、如何定义自定义布局的 xml、如何访问自定义 xml 属性等。

我查遍了互联网,只能找到一些小花絮,甚至无法开始创建子类。

我已经找到了 1) 在 http://parleys.com/#id=2191& 上发表的演讲;sl=3&st=5 但几分钟后请求订阅就会中断。 2) API 参考 http://developer.android.com/reference/android /view/ViewGroup.html 但这并没有提供任何关于如何实际实现子类的线索。

I'm at my wits end trying to figure this out and hope there is someone out there who has a solution.

I want to create a custom layout for an Android App. This should theoretically be straight forward enough, but I can find no useful information on how to do so.

I'm looking for:
1) A simple, step-by-step, tutorial on how to subclass the ViewGroup to create custom layouts.
2) A basic understanding of the inner mechanics of, for example, how to access child views, how and when to ask the child views to draw themselves, how to define the xml for a custom layout, how to access custom xml attributes etc.

I've looked all around the internet and I can only find small tidbits on it, and haven't even been able to get started creating a subclass.

I have found
1) A talk given at http://parleys.com/#id=2191&sl=3&st=5 but it cuts off after a few minutes asking for a subscription.
2) The API reference at http://developer.android.com/reference/android/view/ViewGroup.html but this doesn't give any clue as to how to realistically implement a subclass.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷︶言冷语的世界 2024-11-22 17:18:10

我找到了这个。复杂是没有道理的。

教程

Android 支持中不再有绝对布局。
我只想 setX 方法。 FrameLayout 是最好的选择。
还看:
stackoverflow答案

FrameLayout允许您可以设置类似于 Absolute 的位置和尺寸。如果你想更深入,你将需要使用以下方法:

// 对于 x 和 y,你可以使用 onCreate

// 设置宽度和高度的最佳方法 - 使用 post
// post 方法意味着 UI 已准备就绪

  VEIW_MAIN = (ViewGroup) findViewById(R.id.activity_main);

   VEIW_MAIN.post(new Runnable() {
            @Override
            public void run() {

                LayoutParams paraBigText = BigText.getLayoutParams();
                Double d24 = 200.0;
                paraBigText.width = d24.intValue();
                BigText.setLayoutParams(paraBigText);
                BigText.setGravity( Gravity.CENTER_HORIZONTAL);

           }
       });

...

ViewTreeObserver vto = SOME_ELEMENT.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener()       
{
    public boolean onPreDraw() {

         // changes here
        return true;
    }
}); 

...

如果您需要一些修复,请使用此:

 if (EKRAN.WIDTH() <= 480)
            {
                FIX_FOR_480_WIDTH();
            }
            else if (EKRAN.WIDTH() == 540) {
                FIX_FOR_540_WIDTH();
            }
            else if (EKRAN.WIDTH() == 720) {
                FIX_FOR_720_WIDTH();
            }
            else if (EKRAN.WIDTH() == 1080) {
                FIX_FOR_1080_WIDTH();
            }

...

 void FIX_FOR_540_WIDTH()
    {
        System.out.println("FIX FUNCTION FOR 540 low width !!!!!!!");
        SOMEELEMENT.setY( 0.865f * EKRAN.HEIGHT() );
    }

...

从以下位置复制 SCREEN 类:
按百分比设置位置 - Android DisplayMetrics

如果您确实想要完全自定义,则可以采用其他方式订购然后你可以使用canvas2d并创建自己的uniq UI ...

I found this . It is complicated for nothing .

Tutorial

There is no more absolute layout in android support.
I just wanna setX method . FrameLayout is best option .
Look also :
stackoverflow answer

FrameLayout allows you to setup position and dimensions similar to absolute . If you wanna go deeper you will need to use next methods :

// For x and y you can use onCreate

// Best way for setup Width AND Height - use post
// post method means that UI is ready

  VEIW_MAIN = (ViewGroup) findViewById(R.id.activity_main);

   VEIW_MAIN.post(new Runnable() {
            @Override
            public void run() {

                LayoutParams paraBigText = BigText.getLayoutParams();
                Double d24 = 200.0;
                paraBigText.width = d24.intValue();
                BigText.setLayoutParams(paraBigText);
                BigText.setGravity( Gravity.CENTER_HORIZONTAL);

           }
       });

...

ViewTreeObserver vto = SOME_ELEMENT.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener()       
{
    public boolean onPreDraw() {

         // changes here
        return true;
    }
}); 

...

If you need some fix use this :

 if (EKRAN.WIDTH() <= 480)
            {
                FIX_FOR_480_WIDTH();
            }
            else if (EKRAN.WIDTH() == 540) {
                FIX_FOR_540_WIDTH();
            }
            else if (EKRAN.WIDTH() == 720) {
                FIX_FOR_720_WIDTH();
            }
            else if (EKRAN.WIDTH() == 1080) {
                FIX_FOR_1080_WIDTH();
            }

...

 void FIX_FOR_540_WIDTH()
    {
        System.out.println("FIX FUNCTION FOR 540 low width !!!!!!!");
        SOMEELEMENT.setY( 0.865f * EKRAN.HEIGHT() );
    }

...

Copy SCREEN class from :
Set position by percent - Android DisplayMetrics

In other way if you really wanna full custom order then you can use canvas2d and create own uniq UI ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文