Android 预订a";槽;在动态创建的按钮的布局XML文件中?
在我的应用程序中,我有一个(而且只有一个)在XML布局文件中没有引用的UI元素 该元素是一个按钮,由第三方库在运行时实例化并返回(即,我无法控制该按钮) 我的问题是,我希望使用Android 预订a";槽;在动态创建的按钮的布局XML文件中?,android,android-layout,Android,Android Layout,在我的应用程序中,我有一个(而且只有一个)在XML布局文件中没有引用的UI元素 该元素是一个按钮,由第三方库在运行时实例化并返回(即,我无法控制该按钮) 我的问题是,我希望使用RelativeLayout将XML布局文件中的一些元素(textView)放置在相对于按钮的位置 是否可以在XML布局文件中为该按钮“保留一个空槽”,以便我可以执行以下操作 <TextView android:id="@+id/tv_text_under_button" android:la
RelativeLayout
将XML布局文件中的一些元素(textView)放置在相对于按钮的位置
是否可以在XML布局文件中为该按钮“保留一个空槽”,以便我可以执行以下操作
<TextView android:id="@+id/tv_text_under_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_dynamically_created_button"
android:text="" />
我应该用什么来代替动态创建的按钮R.id.btn\u
更新:感谢下面的答案,我创建了这样一个占位符:
<LinearLayout android:id="@+id/btn_dynamically_created_button"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</LinearLayout>
现在的挑战是:如何将getDynamicallyCreatedButton()返回的对象(返回的对象是LinearLayout
,而不是Button
)与R.id.btn\u动态创建的\u按钮
关联
编辑:似乎解决了类似的问题,但我不确定我是否理解提供的解决方案。我建议:
你能提供一个简短的代码示例吗?我很难想象没有真实的R.id我怎么能“坚持下去”。谢谢+1.编辑我的回复,以包含5分钟的样本。有点难看,但抓住了本质。这非常有效,谢谢!另加一个+1并接受。:)顺便说一句,我试图通过调用b.setId(R.id.btn_动态创建_按钮)来“欺骗”系统,但由于某种原因,它对我无效。即使它有效,您的解决方案也更加优雅,可能更安全。很高兴知道它有效。设置ID的问题是,如果您使用的是XML布局文件,那么如果不能同时实例化所有视图对象,LayoutInflater将不知道该怎么做。如果你在代码中设置整个程序,那么这可能会很好。
<LinearLayout android:id="@+id/btn_dynamically_created_button"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_marginTop="2sp" android:layout_marginBottom="2sp" android:layout_height="wrap_content">
<LinearLayout android:id="@+id/LinearLayout01" android:layout_height="wrap_content" android:layout_width="wrap_content" android:gravity="right" style="@style/SimpleButtonBar" android:layout_below="@+id/rootlayout" android:layout_alignParentBottom="true">
</LinearLayout>
<ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:layout_above="@+id/LinearLayout01" android:fillViewport="true">
<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/detaillayout">
</RelativeLayout>
</ScrollView>
</RelativeLayout>
LinearLayout l = (LinearLayout)findViewById(R.id.LinearLayout01);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
l.addView(b, lp);