2017-02-10 8 views
0
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:baselineAligned="false" 
    android:orientation="horizontal" 
    android:weightSum="100" 
    android:background="@drawable/round_shape" 
    android:descendantFocusability="blocksDescendants" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="25"> 
    <TextView 
     android:text="Title" 
     android:paddingStart="20dp" 
     android:ellipsize="end" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/borrowBookTitle" 
     android:maxLines="1" 
     android:textSize="25sp" 
     android:textColor="#000000" 
     /> 
    <TextView 
     android:text="Locate" 
     android:paddingStart="20dp" 
     android:ellipsize="end" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/locate" 
     android:maxLines="2" 
     android:textSize="15sp" 
     android:textColor="#838383" 
     /> 
    <TextView 
     android:text="borrowStartDate" 
     android:layout_marginStart="10dp" 
     android:layout_marginEnd="5dp" 
     android:layout_marginTop="8dp" 
     android:paddingStart="10dp" 
     android:paddingEnd="20dp" 
     android:paddingBottom="5dp" 
     android:layout_width="wrap_content"`enter code here` 
     android:layout_height="wrap_content" 
     android:visibility="gone" 
     android:id="@+id/borrowStartDate" 
     android:maxLines="1" 
     android:textSize="17sp" 
     android:textColor="#000000" 
     android:background="@color/childview_background" 
    /> 
    <TextView 
     android:text="borrowEndDate" 
     android:layout_marginStart="10dp" 
     android:layout_marginEnd="10dp" 
     android:paddingStart="10dp" 
     android:paddingEnd="20dp" 
     android:paddingBottom="5dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/borrowEndDate" 
     android:visibility="gone" 
     android:maxLines="1" 
     android:textSize="17sp" 
     android:textColor="#000000" 
     android:background="@color/childview_background" 
     /> 
</LinearLayout> 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="75"> 

    <TextView 
     android:text="D-11" 
     android:paddingStart="5dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/borrowDday" 
     android:textSize="35sp" 
     android:textColor="#000000" 
     /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:backgroundTint="@color/button1" 
     android:id="@+id/renewBtn" 
     android:textSize="20sp" 
     android:textColor="#000000" 
     android:visibility="gone" 
     android:text="RENEW" 
     /> 
</LinearLayout> 

リストビューの動的項目の高さ

Listview's項目のXMLファイルです。 borrowStartDate,borrowEndDateおよびrenewBtn可視性がなくなった。 しかし、項目をクリックすると、変更が見える

borrowListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
        @Override 
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
         TextView startDate = (TextView)view.findViewById(R.id.borrowStartDate); 
         TextView endDate = (TextView)view.findViewById(R.id.borrowEndDate); 
         Button renewBtn = (Button)view.findViewById(R.id.renewBtn); 
         if (startDate.getVisibility() == View.GONE) { 
          startDate.startAnimation(AnimationUtils.loadAnimation(view.getContext(), R.anim.slide_down_and_fade_in)); 
          endDate.startAnimation(AnimationUtils.loadAnimation(view.getContext(), R.anim.slide_down_and_fade_in)); 
          renewBtn.startAnimation(AnimationUtils.loadAnimation(view.getContext(), R.anim.fade_in)); 

          startDate.setVisibility(View.VISIBLE); 
          endDate.setVisibility(View.VISIBLE); 
          renewBtn.setVisibility(View.VISIBLE); 
         } 
         else { 
          startDate.setVisibility(View.GONE); 
          endDate.setVisibility(View.GONE); 
          renewBtn.setVisibility(View.GONE); 
         } 
        } 
       }); 

それの変更の可視性のコードに行ったとき

問題のアイテムがの高さをゴーンとき一致Listview高さがあります。 だから、部品の下に直接表示されない各項目をクリックしたとき。

自動的にこれがある

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:fillViewport="true"> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin"> 
     <WebView 
      android:layout_width="0dp" 
      android:layout_height="0dp" 
      android:visibility="gone" 
      android:id="@+id/rightWebView" 
      /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Refresh" 
      android:backgroundTint="@color/button1" 
      android:drawableEnd="@drawable/refresh_picto" 
      android:id="@+id/refreshBorrowBook" 
      android:onClick="refreshBorrow" 
      android:layout_marginBottom="10dp" 
      /> 

     <ListView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/borrowBookList" 
      android:dividerHeight="10dp" 
      android:divider="@color/main_background" 
      /> 
     <TextView 
      android:text="예약 목록" 
      android:paddingStart="50dp" 
      android:visibility="gone" 
      android:layout_marginTop="15dp" 
      android:layout_marginBottom="20dp" 
      android:textColor="#000000" 
      android:textSize="25sp" 
      android:background="@drawable/round_shape" 
      android:backgroundTint="@color/childview_background" 
      android:id="@+id/reservation_list_text" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 
     <ListView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/reservationBookList" 
      android:dividerHeight="10dp" 
      android:divider="@color/main_background" 
      /> 
    </LinearLayout> 
</ScrollView> 

を拡張するコード


がクリック更新ボタン後

after refresh button

when click itemをスナップショットの追加項目をクリック、Listview高さを断片化した場合、私がしたいですをクリックするとTEM

スクロールダウンする場合は、リストビューの他の部分

を示す私はスクロールする必要はありません。

ちょうど項目をクリックすると、リストビューは自動的に高さを取得します。

は、私はあなたが

方法以下
+0

を;'それがする作品。 –

+0

あなたの質問はクリアされていません..plsスナップショットを追加する –

+0

それはどのように見え、どのように見たいかを示します。視覚なしでは明らかではない。 –

答えて

0

使用

view.getLayoutParams().Height=value 

と相対的ではないと思いますheight、Listviewの子ビューのボタンを表示して非表示にすると、以下のメソッドを呼び出す必要があります。

public class Utility { 
     public static void setListViewHeightBasedOnChildren(ListView listView) { 
      ListAdapter listAdapter = listView.getAdapter(); 
      if (listAdapter == null) { 
       // pre-condition 
       return; 
      } 

      int totalHeight = 0; 
      int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST); 
      for (int i = 0; i < listAdapter.getCount(); i++) { 
       View listItem = listAdapter.getView(i, null, listView); 
       listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED); 
       totalHeight += listItem.getMeasuredHeight(); 
      } 

      ViewGroup.LayoutParams params = listView.getLayoutParams(); 
      params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); 
      listView.setLayoutParams(params); 
      listView.requestLayout(); 
     } 
    } 

あなたがそのようなリストビュー項目、変更した直後にこの関数を呼び出し:変更の可視性呼び出し `notifyDataSetChanged()した後

Utility.setListViewHeightBasedOnChildren(myListView); 
0

は、それぞれの子ビュー計算することができます方法 希望により表示を切り替える必要はありません。この問題はnotifyDataSetChanged();

+0

'borrowListView.setOnItemClickListener()'のコードエンドを追加しましたが、まだすべての子ビューを表示するだけでなく、 'textview'sが見えるようになったときにスクロールします –

関連する問題