Это мой код для моего java, потому что когда он расширяется, он не расширяется, чтобы соответствовать всему тексту, поскольку он слишком длинный. Мне нужна помощь, чтобы выяснить, как сделать его расширяемым, чтобы он соответствовал текст.Высота расширяемой высоты
У меня есть 2 Линейное расположение для моего XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="64dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="15dp"
android:background="#FFF"
android:orientation="horizontal">
<TextView
android:id="@+id/color"
android:layout_width="@dimen/color_width"
android:layout_height="@dimen/color_height"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/marinabaysandroomicon"
android:fontFamily="sans-serif-light"
android:gravity="center_vertical"
android:text=""
android:textAlignment="center"
android:textStyle="bold" />
<TextView
android:id="@+id/clickme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:fontFamily="sans-serif-light"
android:gravity="center_vertical"
android:text="Marina Bay Sand Hotel"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/expandable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="#FFF"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:text="To Travel: By Mass Rapid Transit (MRT):4 mins walk from Marina Bay on the North South Line and Circle Line.10 mins walk from Promenade on the Circle Line. Bayfront on the Circle Line and Downtown Line." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:text="To Travel:By public bus:Services 97/97e, 106, 133, 502/502A, 518/518A,NR1 (Available on Fridays, Saturdays and eve of Public Holidays),and NR6 (Available on Fridays, Saturdays and eve of Public Holidays)."
android:layout_above="@+id/textView7"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:text="To Travel: By water taxi:Water taxis can be taken from Grand Copthorne Water Front, Raffles Landing Side, Boat Quay, River Side Point and Robertson Quay to Marina Bay Sands.Ticket ranges from 4S$ to 16S$."
android:layout_above="@+id/textView6"
android:layout_alignParentStart="true"
android:id="@+id/textView7" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:text="Rating 4.5/5.0"
android:id="@+id/textView6"
android:layout_above="@+id/textView4"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:text="Address:10 Bayfront Ave, 018956"
android:id="@+id/textView4"
android:layout_above="@+id/textView5"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:text="Price: S$729 - S$5,899 per night"
android:id="@+id/textView5"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true" />
</LinearLayout>
</LinearLayout>
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
\t LinearLayout mLinearLayout;
\t LinearLayout mLinearLayoutHeader;
\t ValueAnimator mAnimator;
\t
\t @Override
\t protected void onCreate(Bundle savedInstanceState) {
\t \t super.onCreate(savedInstanceState);
\t \t setContentView(R.layout.activity_main);
\t \t
\t \t mLinearLayout = (LinearLayout) findViewById(R.id.expandable);
\t //mLinearLayout.setVisibility(View.GONE);
\t \t mLinearLayoutHeader = (LinearLayout) findViewById(R.id.header);
\t \t
\t \t //Add onPreDrawListener
\t \t mLinearLayout.getViewTreeObserver().addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
mLinearLayout.getViewTreeObserver().removeOnPreDrawListener(this);
mLinearLayout.setVisibility(View.GONE);
final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
\t \t final int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
\t \t mLinearLayout.measure(widthSpec, heightSpec);
\t \t mAnimator = slideAnimator(0, mLinearLayout.getMeasuredHeight());
return true;
}
});
\t \t
\t \t
\t \t mLinearLayoutHeader.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mLinearLayout.getVisibility()==View.GONE){
\t expand();
}else{
\t collapse();
}
}
});
\t }
\t
\t
\t private void expand() {
\t \t //set Visible
\t \t mLinearLayout.setVisibility(View.VISIBLE);
\t \t
\t \t /* Remove and used in preDrawListener
\t \t final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
\t \t final int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
\t \t mLinearLayout.measure(widthSpec, heightSpec);
\t \t mAnimator = slideAnimator(0, mLinearLayout.getMeasuredHeight());
\t \t */
\t \t
\t \t mAnimator.start();
\t }
\t
\t private void collapse() {
\t \t int finalHeight = mLinearLayout.getHeight();
\t \t ValueAnimator mAnimator = slideAnimator(finalHeight, 0);
\t \t
\t \t mAnimator.addListener(new Animator.AnimatorListener() {
\t \t \t @Override
\t \t \t public void onAnimationEnd(Animator animator) {
\t \t \t \t //Height=0, but it set visibility to GONE
\t \t \t \t mLinearLayout.setVisibility(View.GONE);
\t \t \t }
\t \t \t
\t \t \t @Override
\t \t \t public void onAnimationStart(Animator animator) {
\t \t \t }
\t \t \t @Override
\t \t \t public void onAnimationCancel(Animator animator) {
\t \t \t }
\t \t \t @Override
\t \t \t public void onAnimationRepeat(Animator animator) {
\t \t \t }
\t \t });
\t \t mAnimator.start();
\t }
\t
\t
\t private ValueAnimator slideAnimator(int start, int end) {
\t \t
\t \t ValueAnimator animator = ValueAnimator.ofInt(start, end);
\t \t
\t \t
\t \t animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
\t \t \t @Override
\t \t \t public void onAnimationUpdate(ValueAnimator valueAnimator) {
\t \t \t \t //Update Height
\t \t \t \t int value = (Integer) valueAnimator.getAnimatedValue();
\t \t \t \t ViewGroup.LayoutParams layoutParams = mLinearLayout.getLayoutParams();
\t \t \t \t layoutParams.height = value;
\t \t \t \t mLinearLayout.setLayoutParams(layoutParams);
\t \t \t }
\t \t });
\t \t return animator;
\t }
\t
Не работает, и все одинаково. Я обновил свой код. –
Thankyou. У меня больше нет проблем. –