我有一些垂直列出的按钮,我需要所有这些按钮具有相同的宽度,但也要显示其中的所有文本。
基本上我需要所有宽度作为最大宽度的包裹宽度。
希望我解释得很清楚。
现在......我的三星Galaxy S2(4.1.2)上已有一个布局,但在朋友的手机上 - 三星GT-N7100(note2)和android 4.4.2 - 它是不工作 - 按钮中没有显示某些文字。
这是我的布局:
insert into dbo.temp1 (name, location, city)
select name, location, city from mytable.
答案 0 :(得分:0)
您可以扩展LinearLayout
以强制其所有子项具有最大宽度:
// LinearLayoutButtonsHolder.java
package github.yaa110.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
public class LinearLayoutButtonsHolder extends LinearLayout {
public LinearLayoutButtonsHolder(Context context) {
super(context);
}
public LinearLayoutButtonsHolder(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LinearLayoutButtonsHolder(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
if (getChildCount() == 0) return;
getChildAt(getChildCount() - 1).addOnLayoutChangeListener(new OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
v.removeOnLayoutChangeListener(this);
for (int i = 0; i < getChildCount(); i ++) {
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
getChildAt(i).getMeasuredHeight());
getChildAt(i).setLayoutParams(lp);
}
}
});
}
}
现在,在布局的xml文件中,使用LinearLayoutButtonsHolder
而不是LinearLayout
。 不要忘记将每个android:layout_width
的{{1}}设置为Button
:
wrap_content
答案 1 :(得分:0)
尝试设置android.width =“auto”
答案 2 :(得分:0)
像这样使用linearlayout
<LinearLayout
android:layout_centerInParent="true"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:id="@+id/adapter">
答案 3 :(得分:0)
我仅使用XML(无代码)来完成此操作-对于两个TextView。但是,同样的技术也应该适用于任意数量的按钮。
我知道这个问题是3年前问的-但我认为在其他地方,仅涉及XML的解决方案也存在相同/相似的问题。因此希望这对以后的人有所帮助。