正如标题所示,在我的情况下,子视图是TextView
,其中包含一些内容。我希望它每行一个
所以将layout_width
添加到0dp
并将layout_weight
添加到1
不起作用,我假设因为它是其中唯一一个1
是最高的......虽然不确定
这是xml:
<LinearLayout
android:id="@+id/tagsVerticalLineup"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
</LinearLayout>
最后我想要一个接一个地垂直(每行一个) 水平尺寸作为文字长度(内容)
Linear Layout
是否可以实现这一点?
由于
修改: 由于@Ajil O的答案正在发挥作用,我自己的问题仍然存在。我隔离了主要区别。
在我的项目中,我使用Text View
从代码中添加了Inflate
,因为我有默认样式。
膨胀代码:
final LinearLayout tagAreaView = (LinearLayout) findViewById(R.id.tagsVerticalLineup);
TextView tag = (TextView) getLayoutInflater().inflate(R.layout.answer_tag, null);
int tagId = someListArray.size();
tag.setId(tagId);
tag.setText(someChangingObject.text);
tagAreaView.addView(tag, tagId);
文字视图answer_tag
:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/SelectedTagAnswer" />
style xml SelectedTagAnswer
:
<style name="SelectedTagAnswer">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginStart">8dp</item>
<item name="android:layout_marginEnd">16dp</item>
<item name="android:background">@drawable/selected_answer</item>
<item name="android:drawablePadding">8dp</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:drawableStart">@drawable/ic_cross_round</item>
<item name="android:elevation">3dp</item>
<item name="android:paddingBottom">8dp</item>
<item name="android:paddingEnd">25dp</item>
<item name="android:paddingStart">15dp</item>
<item name="android:paddingTop">8dp</item>
</style>
注意:
将简单Text View
插入使用相同样式的xml时,
它像@Ajil O的回答一样。膨胀过程中的一些事情弄乱了它。
答案 0 :(得分:1)
将LinearLayout
宽度设为match_parent
,将高度设为wrap_content
<LinearLayout
android:id="@+id/tagsVerticalLineup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
如果您希望TextView
占用1行,请使用android:maxLines="1"
属性
修改强>
现在TextView
都是彩色的。您可以看到TextView
与其内容一样宽。
容器LinearLayout
以浅紫色(?)颜色着色。此LinearLayout
必须至少与最长 TextView
一样宽,否则视图(或其内容)将被剪裁。
<LinearLayout
android:id="@+id/tagsVerticalLineup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:background="#AAAAFF"
android:layout_gravity="center">
<TextView
android:layout_margin="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#080"
android:text="small text"
android:textColor="#FFF"
android:textSize="18sp"
android:maxLines="1"/>
<TextView
android:layout_margin="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Slightly longer text"
android:background="#400"
android:textColor="#FFF"
android:textSize="18sp"
android:maxLines="1"/>
<TextView
android:layout_margin="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="loooooooooooooooooong text"
android:background="#008"
android:textColor="#FFF"
android:textSize="18sp"
android:maxLines="1"/>
</LinearLayout>
答案 1 :(得分:1)
最后找到了一个解决方案,结果表明Android一旦显示就不会刷新wrap_content
的视图布局。
如答案WRAP_CONTENT not working after dynamically adding views
中所示所以我的问题是膨胀视图然后添加内容(文本)。
为此,我再次设置高度和宽度:
tag.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
现在,如果所有来自Ajil O的答案都已实施,那么它正在运作!
希望这个边缘案件将来会对某人有用
答案 2 :(得分:0)
只需在wrap_content
中使用android:layout_width
参数即可,您现在正在使用0dp
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/tagsVerticalLineup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
答案 3 :(得分:0)
最好使用ContrainstLayout,并且可以将任何事件操作到您想要的尺寸
答案 4 :(得分:0)
df = pd.read_csv("Trimmed Training Data.csv", delimiter=",")
X = np.array(df.drop(['PredictThis'],1))
y = np.array(df['PredictThis'])
X = preprocessing.scale(X)
# create NN model
model = Sequential()
# 2 inputs, 10 neurons in 1 hidden layer, with tanh activation and dropout
model.add(Dropout(0.2, input_shape=(15,)))
model.add(Dense(100, init='uniform', input_shape=(15,), activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(100, init='uniform', input_shape=(100,), activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(5, init='uniform', input_shape=(100,), activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(1, init='uniform', activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='rmsprop')
# Fit the model
model.fit(X, y, nb_epoch=25, batch_size=15)
Height and Width=match_parent
制作宽度textView
,以便您可以使用match_parent
或使用textalignment=centre
gravity=centre