Android-GridView與ScrollView共用的衝突問題(類似ListView)
》由於ListView,GridView本身都繼承於ScrollView,一旦在ScrollView中巢狀ScrollView,在ScrollView中巢狀使用ListView或者GridView,ListView只會顯示一行多一點。兩者進行巢狀,即會發生衝突。核心解決方案:重寫ListView或者GridView的OnMesure方法。重寫GridView方法,使其在繪製時重新計算GridView高度
---------------------
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
/**
*
* @author 作者 :desaco
*
* @version 建立時間:2016-1-22 上午9:43:33
*
*/
public class CustomGridView extends GridView{
public CustomGridView(Context context) {
super(context);
}
public CustomGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
----------------------------------
public class MyGridView extends GridView {
private boolean haveScrollbar = true;
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
/**
* 設定是否有ScrollBar,當要在ScollView中顯示時,應當設定為false。 預設為 true
*
* @param haveScrollbars
*/
public void setHaveScrollbar(boolean haveScrollbar) {
this.haveScrollbar = haveScrollbar;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (haveScrollbars == false) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
} else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
}
------------------------
XML程式碼如下:
<cn.com.example.fang_com.beta_content.iwidgets.CustomGridView
android:id="@+id/common_show_workbenchs_gview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_color"
android:listSelector="#00000000"
android:numColumns="2"
android:horizontalSpacing="1dp"
android:verticalSpacing="1dp"
android:scrollbars="none" />
---------------------------------
import android.content.Context;
import android.util.AttributeSet;
import android.view.View.MeasureSpec;
import android.widget.ListView;
public class TestListView extends ListView{
public TestListView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public TestListView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public TestListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
相關文章
- ScrollView中用ListView的事件衝突View事件
- ScrollView 與ListView 滑動衝突解決View
- ListView與ScrollView衝突,計算ListView的高度Item,然後重繪View
- android NestedScrollView和ListView衝突問題AndroidView
- ScrollView與ListView合用問題(正確計算Listview的高度)View
- ScrollView巢狀RecyclerView滑動衝突相關問題View巢狀
- 重寫ListView解決ListView內部ViewPaper滑動事件衝突問題View事件
- onMeasure簡單方法 完美解決ListView與ScollView衝突問題!View
- 解決Flutter的ListView巢狀ListView滑動衝突以及無限高度問題FlutterView巢狀
- 解決ScrollView巢狀ViewPager出現的滑動衝突問題巢狀Viewpager
- 完美解決ScrollView巢狀ListView滑動衝突(有圖有真相)View巢狀
- jQuey與json.jar的衝突問題JSONJAR
- PtrClassicFrameLayout與viewpager橫向滑動衝突的問題Viewpager
- 如解決jquery與原生js衝突的問題jQueryJS
- 關於click事件與touch事件衝突的問題事件
- JAR衝突問題的解決JAR
- 從原理上說說ScrollView巢狀ListView的問題View巢狀
- iOS 側滑返回手勢與Scrollview衝突的解決辦法iOSView
- scrollview 的滑動衝突 viewpager等都適用Viewpager
- 四種方案解決ScrollView巢狀ListView問題View巢狀
- 使用反射的Factory Pattern與Singleton Pattern的衝突問題反射
- git 解決版本衝突問題Git
- wsl docker 和 ubuntu 衝突問題DockerUbuntu
- ivew表格中render函式與tooltip:true衝突問題函式
- GO 問題之多版本衝突解決Go
- @AllArgsConstructor與@Value共用的問題解決Struct
- 一個網路IP地址衝突的問題
- Maven中解決依賴衝突的問題Maven
- oracle客戶端同sap衝突的問題Oracle客戶端
- android listview and scrollviewAndroidView
- Android Webview和ScrollView衝突和WebView使用總結AndroidWebView
- 安裝MySQL 5.6.10包衝突問題MySql
- 如何解決jQuery的美元$符號衝突問題jQuery符號
- jquery如何解決版本之間衝突的問題jQuery
- 小程式 input placeholder高度與input預設高度衝突問題
- SSIS 資料庫排序規則衝突問題資料庫排序
- android之截圖(包括擷取scrollview與listview的)AndroidView
- Git Worktree:解決分支依賴衝突的問題Git