gpt4 book ai didi

java - 使用 FrameLayout 和 TextView 创建自定义 ImageButton 类

转载 作者:行者123 更新时间:2023-12-01 15:41:42 42 4
gpt4 key购买 nike

我是新手,所以,感谢任何帮助。我在 StackOverflow 上读了很多帖子,也在 Google 上搜索了我的疑问,但很难找到好的答案。

这是我正在尝试做的事情:

    <FrameLayout 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<ImageButton
android:background="@layout/roundcorners"
android:id="@+id/hug"
android:scaleType="centerInside"
android:cropToPadding="false"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingBottom="10dip"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:src="@drawable/hug">
</ImageButton>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:textColor="#000000"
android:textSize="15dip"
android:textStyle="bold"
android:paddingBottom="5dip"
android:clickable="true"
android:text="Hug">
</TextView>
</FrameLayout>

在上面你们可以看到我需要的 XML 版本。

重点是...我将在运行时拥有许多这样的 FrameLayout。填写按钮的每条信息都来自数据库。

因此,我需要创建一个 Java 类,在其中可以使用数据库中所有寄存器的循环并实例化一个新的 FrameLayout 类(该类必须有一个 ImageButton 和一个 TextView,正如您从上面的 XML 中看到的那样)并且只需传递参数,如下所示:

for (int i = 0; i < mArray.length; i++) {
button = new MyNewImageButton(name, src, text);
}

以上只是为了简化。我的意思是,在创建我计划创建的此类的实例时,我将从数据库传递参数。当然,创建的每个按钮都会添加到布局中。

所以...我的问题是:我知道如何使用 XML 来执行此操作,但我真的很难创建一个类来执行此操作。

有什么想法吗?感谢任何帮助。

PS:抱歉,如果我的英语有任何错误,好吗?我是巴西人。总有一天我的英语会完美无缺!抱歉,如果这个问题已经得到解答。

<小时/>

很抱歉回答我自己的问题来提出另一个问题。我尝试使用评论,但字符数有限制,所以,我真的很抱歉。

嘿伙计们,@blessenm。嗯...我尝试使用充气机,并想出了以下代码:

    super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// *******************************************
setContentView(R.layout.main);


//this is my main screen
//it's a linearlayout vertical orientation
ViewGroup parent = (ViewGroup) findViewById(R.id.tela_principal);

//these two new LinearLayouts will be one above the other,
//just like two lines
LinearLayout l1 = new LinearLayout(this);
LinearLayout l2 = new LinearLayout(this);

//inside of each linearlayout I set the orientation to horizontal
//so, everytime a picture is inflated from xml, it will fill in one
//linearlayout
l1.setOrientation(LinearLayout.HORIZONTAL);
l2.setOrientation(LinearLayout.HORIZONTAL);

//setting linearlayout parameters, so they fill the whole screen
l1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
l2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));


//the first two inflated xml imagebuttons I add to LinearView1
view = LayoutInflater.from(getBaseContext()).inflate(R.layout.figurabotao,
l1, true);
view = LayoutInflater.from(getBaseContext()).inflate(R.layout.figurabotao,
l1, true);

//the next two inflated xml imagebuttons I add to LinearView2
view = LayoutInflater.from(getBaseContext()).inflate(R.layout.figurabotao,
l2, true);
view = LayoutInflater.from(getBaseContext()).inflate(R.layout.figurabotao,
l2, true);

//after the above, we should have a grid 2X2


//after linearlayouts are filled, I add them to the main screen
parent.addView(l1, new LinearLayout.LayoutParams(0, 0, 1));
parent.addView(l2, new LinearLayout.LayoutParams(0, 0, 1));

但是这不起作用。在错误日志中我收到以下消息:

“未处理的事件循环异常”。

关于我做错了什么有什么想法吗?

谢谢!

最佳答案

如果您只是尝试从 xml 创建 View 并将其添加到布局中。只需使用 LayoutInflater 即可。

在 Activity 内部使用类似的东西

FrameLayout frame = (FrameLayout)getLayoutInfalter.inflate(
R.id.YOUR_VIEW_XML,null);
layout.addView(frame);

如果您尝试创建一个类,请扩展框架布局或 View 。创建一个构造函数,它接受您的参数并分配所需的值。

编辑:访问内部元素如果您已为这些元素设置了 id,则可以通过

访问它们
TextView text = (TextView)frame.findViewById(R.id.yourtextview);

或者您可以使用子索引,例如

TextView text = (TextView)frame.getChildAt(0);

关于java - 使用 FrameLayout 和 TextView 创建自定义 ImageButton 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937127/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com